如何将RecyclerView中选定的项目位置更改为顶部?

5

我有一个RecyclerView,我想在选择RecyclerView项目后动态地将项目位置改变到顶部。

请建议实现上述问题的最佳方法?


5
点击项目后,从数组列表中删除该位置的项目并将其添加到第0个位置。 - Manohar
是的!!它起作用了!!谢谢!! - Anamika Chavan
4个回答

11

您需要将所选项目与列表中的顶部项目交换,然后通知适配器关于位置更改的情况。一个示例代码如下:

Collections.swap(orderItems.getItems(), position, 0);
                notifyItemMoved(position, 0);

希望这有所帮助!


有什么建议可以将这个牛逼算法与布局项结合起来?每个项目都在零/第一位置吗?@amit-srivastava零号项目:带有图标。 其余项目:没有图标。当交换发生时,请放置。当前项目不更改布局。 - mochadwi

7

试试这个

String Item = List.get(position); 
List.remove(position);  // remove item from the list
List.add(0,removedItem); // add at 0 index of your list
notifyDataSetChanged();
linearLayoutManager.scrollToPositionWithOffset(0, 20); // scroll recyclerview to top 

或者

recyclerview.getLayoutManager().scrollToPosition(0)  // scroll recyclerview to top 

或者

recyclerview.smoothScrollToPosition(0);  // scroll recyclerview to top 

我尝试了你的代码,但它没有滚动到顶部位置。 - Manideep

2

在项目的onclick中添加以下代码:

String removedItem = actualList.remove(position); 
//actualList is list used to populate recylerview and position is selected 
//item position
actualList.add(0,removedItem);
notifyDataSetChanged();

0

如果您有不同的这样的情况, 我们可以从@manohar-reddy这里实现这种方法,并调用notifyItemChanged(position),它也会调用onBindViewHolder,然后相应地更新您的布局。

*在这种情况下,如果第0项与其他项的布局不同

您可能需要阅读此参考资料以正确获取项目位置

感谢@amit-srivastava答案和@manohar-reddy


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接