插入数据时Recyclerview自动向上滚动
Posted
技术标签:
【中文标题】插入数据时Recyclerview自动向上滚动【英文标题】:Recyclerview automatically scroll up when data inserted 【发布时间】:2017-11-13 11:06:30 【问题描述】:我遇到了一个问题,当我将数据添加到数组列表然后将其添加到适配器之后,当我将其设置为回收器视图适配器时,它会自动跳到顶部我如何防止它像我想添加数据一样在虚拟空间中,我也尝试使用 -
runOnUiThread(new Runnable()
public void run()
innerAdapter.notifyDataSetChanged();
);
但它不起作用。我该如何解决?
添加一些代码用于向上滚动
if (isScrollUp)
isEnable = true;
userChats.addAll(0, model.data);
innerChatAdapter.notifyDataSetChanged();
new Handler().postDelayed(new Runnable()
@Override
public void run()
nnerChatAdapter.notifyItemInserted(0);
recyclerView.smoothScrollToPosition(0);
, 1);
【问题讨论】:
如果您设置所有时间适配器,则会发生这种情况。分享更多代码为您提供帮助! 你在哪里调用'setAdapter()'方法? Ronak Thakkar 我在 onCreateview 方法中设置适配器。 @Madhav_nimavat 看到我的回答你会得到适当的解决方案 Thnxs Ashish 和 ND1010_ 两个答案都是正确的,都可以帮助我。 【参考方案1】:如果您想在向适配器添加数据后向下滚动,请在调用 notifyDataSetChanged() 后添加以下方法。
new Handler().postDelayed(new Runnable()
@Override
public void run()
mRecyclerView.smoothScrollToPosition(new_data_size);
, 1);
【讨论】:
好的,如果你想向上滚动而不是仅仅将位置添加到“0”。\ ashish 我的网络太慢了,所以我无法获取数据,所以我会在一段时间后更新你。 ash它直接跳到底部 我在数组列表顶部的 0 位置添加 你想要什么?跳到底部还是从底部跳到顶部?【参考方案2】:试试这个 不要更新整个 RecyclerView。 Ref Here
runOnUiThread(new Runnable()
public void run()
innerAdapter.notifyItemInserted(position /* position of newly added item */);
);
【讨论】:
【参考方案3】:要解决这个问题,您可以在视图的任何其他顶部元素上使用 requestFocus() 方法。
top_element.requestFocus();
【讨论】:
aashutosh kumar 你能帮我如何实现它吗? 是的,除了 recyclerview 之外,视图中有任何顶部元素 Aashutosh kumar 我正在使用 recyclerview以上是关于插入数据时Recyclerview自动向上滚动的主要内容,如果未能解决你的问题,请参考以下文章