如何在回收站视图中更改项目的位置

时间:2018-10-16 10:54:27

标签: android android-recyclerview recycler-adapter

我正在使用具有回收者视图的Android应用程序。我在回收者视图中随机订购了物品。我想将列表的第五项移到第一位。并将先前在第一位置的项目移动到第二位置。有人可以帮我吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Collections.swap()

  • Swaps在指定列表中指定位置的元素。 (如果指定的位置相等,则调用此方法将使列表保持不变。)

方法

 public static void swap(List<?> list,
        int i,
        int j)

参数:

list - The list in which to swap elements.
i - the index of one element to be swapped.
j - the index of the other element to be swapped.

示例代码

// first swap the item using  Collections.swap() method
Collections.swap(yourList, firstPosition, positionToSwap);

// than notify your adapter about change in list using  notifyItemMoved() method
YourAdapter.notifyItemMoved(firstPosition, positionToSwap);

答案 1 :(得分:0)

RecyclerView的工作方式是每次有新项目出现在屏幕上时,它将调用您的自定义RecyclerView.Adapter子类。适配器有一个数据集的引用,您可以从该数据集获取视图数据并传递ViewHolder(项目布局)并索引到onBindViewHolder(MyViewHolder holder, int position)中,以获取dataset[position]并将数据放入{ {1}}。

这样,要交换元素的位置,您有2个选择:

  • 重新排列初始数据集中的数据。很有可能是某种ArrayList <>,而您执行holder.textview.setText(dataset[position]) ArrayList会根据需要移动所有内容。

  • 如果保持数据集完整很重要,则可以重写适配器,以使其保留TEMP=dataset[5];ArrayList.remove(TEMP);ArrayList.insert(TEMP,1);的映射并根据该映射填充项目。那应该是微不足道的。

然后您必须使用{ position : dataset_index }

刷新数据