如何在不滚动到顶部的情况下将新项目添加到 recyclerview

Omi*_*ani 4 java android android-recyclerview

我想将新项目设置到 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();
        }
    });




}
Run Code Online (Sandbox Code Playgroud)

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

Omi*_*ani 5

最后我得到了一个解决方案。我把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);
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

我希望这对大家有用。谢谢

  • 为什么是`activity.runOnUiThread` 部分?你不是已经在 UI 线程中这样做了吗?如果它不在 UI 线程上,理论上您可能会遇到多线程问题,因为在两个线程中都使用了 `list` (2认同)