Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图使我的ListView具有多选项,但我可以';我不能让它工作_Java_Android_Android Layout_Android Listview - Fatal编程技术网

Java 试图使我的ListView具有多选项,但我可以';我不能让它工作

Java 试图使我的ListView具有多选项,但我可以';我不能让它工作,java,android,android-layout,android-listview,Java,Android,Android Layout,Android Listview,我已经在这上面呆了一段时间了。我希望用户能够从列表中选择一个项目(只需点击该项目,没有复选框),并让它亮起或做一些事情,这样很明显它被选中了。用户可以选择任意数量,最后点击“完成”完成选择 我该怎么做呢?我有一个自定义适配器和行布局。创建一个hashmap或其他东西来帮助您统计列表中选定的项目: HashMap<Integer, Boolean> selectedItems = new HashMap<Integer, Boolean>(); 当然,您应该将hashma

我已经在这上面呆了一段时间了。我希望用户能够从列表中选择一个项目(只需点击该项目,没有复选框),并让它亮起或做一些事情,这样很明显它被选中了。用户可以选择任意数量,最后点击“完成”完成选择


我该怎么做呢?我有一个自定义适配器和行布局。

创建一个hashmap或其他东西来帮助您统计列表中选定的项目:

HashMap<Integer, Boolean> selectedItems = new HashMap<Integer, Boolean>();

当然,您应该将hashmap项设置为onItemClickListener。

这里您需要一个布尔类型数组,该数组的大小等于ListView适配器列表的大小,然后只需添加一个onItemClickListView的侦听器,选择项后只需切换列表中的布尔变量,现在,当用户完成选择后,只需在列表上迭代选定的项目即可(简单:)


当用户单击列表项时,也可以切换列表项的背景(选择或未选择状态)

将ListView的setChoiceMode方法设置为MULTI_SELECT

更改单击行的背景色。并跟踪所选行。我应该在适配器或活动中这样做吗?在适配器中设置listitemclicklistener。。。
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater inflater = (LayoutInflater) ctx
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = inflater.inflate(R.layout.your_custom_item, null);
        }

        if(selectedItems.get(position))
            v.setBackgroundColor("YOURSELECTEDCOLOR");
        else v.setBackgroundColor("YOURUNSELECTEDCOLOR");

        return v;
    }