ListView更新单个项目

时间:2018-09-11 17:21:54

标签: android

我想更新一个列表视图项目,并且在我向下滚动到不可见的项目并且似乎还有一个项目(不可见)也得到更新时可以正常工作(滚动时会看到这一点)下)

我的代码:

listViewIndex = position;

View v_lv_item = lv.getChildAt(listViewIndex - lv.getFirstVisiblePosition());
if(v_lv_item  == null)
return;

每个列表视图项都有一个按钮,用于更新该列表视图行上的视图:

ibCheckbox = v_lv_item.findViewById(R.id.ibCheckbox);
   runOnUiThread(new Runnable() {
   @Override
   public void run() {
        ibCheckbox.setImageResource(R.drawable.checkbox_fill);
        lv_custom_adapter.notifyDataSetChanged();
        }
   });

enter image description here

上面的图像描述了这个问题,当我更新位置0的listview项目时,位置5的项目(直到我滚动才可见)也会更新(它不应该),如果我对位置1执行相同操作,则位置6也被更新,依此类推,甚至反之亦然,例如:当我更新pos 7并向上滚动pos 2时,也将被更新,如何防止这种情况,只有listview更新我单击的项目(而不更新列表视图项目,直到滚动才可见)?

1 个答案:

答案 0 :(得分:0)

请查看这篇关于处理复选框的文章。给出了3种方法。这应该可以解决您的问题:

https://android.jlelse.eu/android-handling-checkbox-state-in-recycler-views-71b03f237022