0

如果我有 2 个微调器取决于类型 ArrayList>

 spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                         ArrayList<HashMap<String, String>> arrList = new ArrayList<HashMap<String,String>>();
                        for (HashMap<String, String> map2 : arrList) {
                            String value = map2.get("SectionID");
                            // Do something

                            Context context = getApplicationContext();

                            int duration = Toast.LENGTH_SHORT;

                            Toast toast = Toast.makeText(context, value, duration);
                            toast.show();
                        Log.d("wwwwwwwwwwwwwwwwwwww: ", value);
                        // Do something
                    }
                    }
                    @Override
                    public void onNothingSelected(AdapterView<?> adapter) {

                    }
                }); 

我确实喜欢这样,但是发生了事情并且 logcat 没有错误

4

2 回答 2

0

在用户单击微调器中的项目后,我不知道如何在此数组中获取带有标签(courseid)的项目。

如果您只想courseid从每一行获取,则不需要自定义 OnItemSelectedListener。简单使用:

// Let's use the regular listener     vvvvvvvvvvvvvvvvvvvvvv
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
        HashMap<String, String> map = arrList.get(position);
        String id = map.get("courseid");
        // Do something
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapter) {}
});

arrList保存 SimpleAdapter 数据的类变量在哪里。


我确实喜欢这样,但是发生了事情并且 logcat 没有错误

那是因为你刚刚创建arrList,所以它是的:

ArrayList<HashMap<String, String>> arrList = new ArrayList<HashMap<String,String>>();
for (HashMap<String, String> map2 : arrList) { // This arrList has no data!

您需要使用创建 SimpleAdapter 时使用的 ArrayList。

new SimpleAdapter(this, arrList, ...);

这是您必须使用的 ArrayList,它必须是一个类变量。

于 2012-11-16T19:53:22.720 回答
0

你的帖子有点难以理解,但我想我有一个想法。您有一个由数组列表填充的微调器,在微调器上的每个“梯级”的每个索引处都有多个哈希图。因此,当项目被选中时,您想要获取被选中的单个键并对其进行处理。众所周知,ahashMap并没有真正被索引,所以我们必须使用其他方法来获取它,对吗?

        ArrayList<HashMap<String, String>> arrList = new ArrayList<HashMap<String,String>>();

        spinner.setOnItemSelectedListener(new CustomOnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view,
                    int position, long id) {

                // for each key in the hashMap at this position..
                for (String key : arrList.get(position).keySet()) {
                    if (key == "Calculus") {
//                      do something
                    } else if (key == "Physics") {
//                      do something else
                    }
                }                                       
            }

这个想法很简单。您在微调器上选择的位置的索引处获得 hashMap 的整个 keySet,然后根据它所说的内容为其中的每个键做一些事情。假设您那里只有一个键值对,这应该没有太多麻烦。

我不得不说你真的应该重新考虑一下设计。您有多个 hashMap 容器,每个容器只保存一件事。实在是太浪费资源了。很难推荐一个替代方案,因为我不完全知道这些数据是如何被使用的,但你应该知道在 java 中制作对象不是免费的。

于 2012-11-16T20:30:54.787 回答