我想更新一个列表视图项目,并且在我向下滚动到不可见的项目并且似乎还有一个项目(不可见)也得到更新时可以正常工作(滚动时会看到这一点)下)
我的代码:
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();
}
});
上面的图像描述了这个问题,当我更新位置0的listview项目时,位置5的项目(直到我滚动才可见)也会更新(它不应该),如果我对位置1执行相同操作,则位置6也被更新,依此类推,甚至反之亦然,例如:当我更新pos 7并向上滚动pos 2时,也将被更新,如何防止这种情况,只有listview更新我单击的项目(而不更新列表视图项目,直到滚动才可见)?
答案 0 :(得分:0)
请查看这篇关于处理复选框的文章。给出了3种方法。这应该可以解决您的问题:
https://android.jlelse.eu/android-handling-checkbox-state-in-recycler-views-71b03f237022