列表视图滚动时选择了两个项目

时间:2017-01-04 07:36:26

标签: android 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);
                    }
                }
            }
        }

2 个答案:

答案 0 :(得分:0)

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

onItemClick中,试试这个:

checked = view.getTag();

选择项目后,执行view.setTag(positions);。但是我建议你,如果这个代码库是新的/你是从头开始做的话,请切换到RecyclerView

答案 1 :(得分:-2)

我使用RecyclerView Multiselect使用Contextual Action Mode完成了此操作。检查一下。