【问题标题】:how to add new items to recyclerview without scroll to top如何在不滚动到顶部的情况下将新项目添加到 recyclerview
【发布时间】:2016-10-05 15:22:59
【问题描述】:

我想将新项目设置到 recyclerview 的顶部。但是当我设置项目时,recyclerview 会自动滚动到顶部。
我尝试了很多代码,但我无法解决。
这是我的addItem 方法:

   public void addItem(final ArrayList<String> list) {


    for (int i=0; i< list.size();i++){
        items.add(i,list.get(i));
    }
    activity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
//                notifyDataSetChanged();
//                notifyItemRangeInserted( 0,list.size() );
//                notifyItemInserted();

            notifyItemRangeInserted(10,11);
//                notifyDataSetChanged();
        }
    });




}

我尝试了所有评论的方法。
你能帮我解决这个问题吗?
谢谢

【问题讨论】:

    标签: java android android-recyclerview


    【解决方案1】:

    我终于找到了解决方案。我在设置新项目后输入了notifyItemRangeChanged。我的解决方案是:

     public void addItem(final ArrayList<String> list,int h) {
    
        final int oldsize = items.size();
        for (int i=list.size()-1; i>=0 ;i--){
            items.add(0,list.get(i));
        }
    
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                notifyItemRangeInserted(0,items.size()-oldsize);
            }
        });
    
    }
    

    我希望这对每个人都有用。谢谢

    【讨论】:

    • 为什么是activity.runOnUiThread 部分?您不是已经在 UI 线程中执行此操作了吗?如果它不在 UI 线程上,理论上您可能会遇到多线程问题,因为两个线程中都使用了list
    【解决方案2】:

    您可以使用recyclerView.scrollToPosition(pos);,其中 pos 是在对列表进行一些操作后您希望将列表视图聚焦的位置。

    【讨论】:

    • 我的问题是关于recyclerView。不是关于listView
    • recyclerview 也有类似的方法,等我编辑答案
    • 您可以使用scrollToPosition() 方法进行回收视图,其工作原理类似于listview 的setSelection() 方法
    猜你喜欢
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 2017-02-22
    相关资源
    最近更新 更多