【问题标题】:Recyclerview automatically scroll up when data inserted插入数据时Recyclerview自动向上滚动
【发布时间】: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_ 两个答案都是正确的,都可以帮助我。

标签: android arraylist android-recyclerview


【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多