簡體   English   中英

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

[英]How can I update the position of an item inside of a RecyclerView?

我正在嘗試將一項功能添加到待辦事項列表中,從而導致“已選中”項目進入列表底部。 我正在使用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);
                }
            }
        });

我不知道要添加什么來更新職位,我仍然對如何始終知道“底部”感到困惑,因為列表中沒有固定數量的項目。

Android團隊添加了對此類操作的支持。 查看DiffUtils: https : //github.com/mrmike/DiffUtil-sample

簡而言之,您只需要提供適當的數據集,並讓庫找出發生了什么變化。

如果您仍然想手動執行此操作,則需要執行以下操作:

  1. 單擊時,將基礎模型更新為具有正確的選定狀態

  2. 將該項目重新排序到列表中的適當位置。 (list.remove(位置),然后list.add(項目),也許)

  3. 在適配器上調用notifyDataSetChanged()。 (甚至更好的notifyRangeChanged(from,to)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM