Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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
Android Listview滚动时选择的两个项目_Android_Listview - Fatal编程技术网

Android Listview滚动时选择的两个项目

Android Listview滚动时选择的两个项目,android,listview,Android,Listview,我在multiselect listview中遇到问题,我遇到的问题是当我在listview中选择第一个项目时,滚动时最后一个项目也被选中,只有当我在listview中有超过10个项目时,才会发生此问题。我不知道我的代码出了什么问题,有人能给我建议一个合适的解决方案来避免这个问题吗 private class MultipleChoiceClickListener implements ListView.OnItemClickListener { @Override

我在multiselect listview中遇到问题,我遇到的问题是当我在listview中选择第一个项目时,滚动时最后一个项目也被选中,只有当我在listview中有超过10个项目时,才会发生此问题。我不知道我的代码出了什么问题,有人能给我建议一个合适的解决方案来避免这个问题吗

private class MultipleChoiceClickListener implements
        ListView.OnItemClickListener {

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        if (questionCount > 0) {
            ImageView imgTick = (ImageView) view.findViewById(R.id.imgTick);
            int len = lvMultiSelect.getCount();
            checked = lvMultiSelect.getCheckedItemPositions();
            for (int i = 0; i < len; i++) {
                if (i == position) {
                    if (checked.get(i)) {
                        lvMultiSelect.getChildAt(i).setBackgroundColor(
                                getResources().getColor(
                                        R.color.listitem_onclick));
                        imgTick.setImageResource(R.drawable.tick_img);
                    } else {
                        lvMultiSelect.getChildAt(i).setBackgroundColor(
                                getResources().getColor(
                                        R.color.default_list_background));
                        imgTick.setImageResource(R.drawable.not_checked_img);
                    }
                }
            }
        }
私有类multipleChiiceClickListener实现
ListView.com侦听器{
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
如果(问题计数>0){
ImageView imgTick=(ImageView)view.findViewById(R.id.imgTick);
int len=lvMultiSelect.getCount();
checked=lvMultiSelect.getCheckedItemPositions();
对于(int i=0;i
我使用
RecyclerView Multiselect
使用
上下文操作模式来完成此操作。请检查此操作。

创建一个对象来存储所有标记的位置,例如整数数组

在您的
onItemClick
中,尝试以下操作:

checked=view.getTag();


选择一个项目后,执行
view.setTag(位置);
。不过,我建议您,如果此代码库是新的/您是从头开始创建的,请切换到
RecyclerView

这可能是因为使用了缓存视图。可能的解决方案是在模型类中保持选中和未选中状态。并参考模型类的对象来设置视图中的选中和取消选中状态