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