插入数据时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自动向上滚动的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView 在项目更改时向上滚动

如何在向上滚动时清除 RecyclerView 中的列表

向下滚动然后再次向上滚动后,recyclerview 项目之间出现间隙。请看详情

RecyclerView在滚动时弄乱了数据

键盘打开时相应向上滚动 RecyclerView

再次向上滚动后,带有 Glide 的 RecyclerView 导致 NullPointer