我试图在待办事项列表中添加一项功能,该功能会导致"已检查"项目转到列表的底部。我使用ArrayList
来保存使用RecyclerView
组织的项目,因此我知道关键是更新位置,但我不知道该怎么做。
我很困惑你如何将所有内容一个一个地移动,然后将选中的项目放在最后一个位置,使其位于列表的底部。
这就是我检查和取消选中框的方式:
taskCheckBox.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
if (holder.taskCheckBox.isChecked())
{
bucketItem.setSelected(false);
holder.taskCheckBox.setChecked(false);
}
else
{
bucketItem.setSelected(true);
holder.taskCheckBox.setChecked(true);
}
}
});
我不知道我要添加什么来更新位置,我仍然对我如何总是知道"底部"是因为列表中没有固定数量的项目。
答案 0 :(得分:0)
Android团队为此类动作添加了支持。查看DiffUtils: {{3}}
简而言之,您只需要提供正确的数据集,并让图书馆找出改变的内容。
如果您仍想手动执行此操作,则需要执行以下操作:
点击后,将基础模型更新为具有正确的选定状态
将该项重新排序到列表中的适当位置。 (list.remove(position)然后list.add(item)或许)
在适配器上调用notifyDataSetChanged()。 (甚至更好的notifyRangeChanged(从,到)