如何更新RecyclerView中项目的位置?

时间:2017-02-06 15:38:46

标签: java android

我试图在待办事项列表中添加一项功能,该功能会导致"已检查"项目转到列表的底部。我使用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);
                }
            }
        });

我不知道我要添加什么来更新位置,我仍然对我如何总是知道"底部"是因为列表中没有固定数量的项目。

1 个答案:

答案 0 :(得分:0)

Android团队为此类动作添加了支持。查看DiffUtils: {{3}}

简而言之,您只需要提供正确的数据集,并让图书馆找出改变的内容。

如果您仍想手动执行此操作,则需要执行以下操作:

  1. 点击后,将基础模型更新为具有正确的选定状态

  2. 将该项重新排序到列表中的适当位置。 (list.remove(position)然后list.add(item)或许)

  3. 在适配器上调用notifyDataSetChanged()。 (甚至更好的notifyRangeChanged(从,到)