如何停止刷新recyclerview数据每次滚动到顶部位置android

AAA*_*AAA 5 android android-recyclerview

我正在尝试使用 recyclerview 制作类似于视频的布局。我制作了一个 recyclerview,它会在一定时间间隔后更新列表,但问题是数据更新后它会自动滚动到顶部位置。我想做一些像视频一样的东西。https://youtu.be/omcS-6LeKoo 我尝试过使用来自 SO RecyclerView 的链接,当更改适配器数据时 RecyclerView notificationDataSetChanged 滚动到顶部位置但无法解决。下面是我的尝试

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recyclerViewId);

        handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
//                Toast.makeText(getApplicationContext(),"Updating",Toast.LENGTH_LONG).show();
                listShow();
                handler.postDelayed(this,1000);

            }
        },1000);

    }

void listShow(){

        retrofitApiCall = RetrofitInstance.getRetrofitInstance().create(RetrofitApiCall.class);
        Call<ModelClass_JSONParse> getDetails = retrofitApiCall;
        anime = ExtendedAnime.getAll();

        getDetails.enqueue(new Callback<ModelClass_JSONParse>() {
            @Override
            public void onResponse(Call<ModelClass_JSONParse> call, 
         Response<ModelClass_JSONParse> response) {
                Log.v("Res",response.toString());
                getWithValues = new HashMap<>();

                if (response.isSuccessful()){

                        list.add(mModelClass_adapter);
                    }
                    adapter = new Adapter(getApplicationContext(),list);
                    StaggeredGridLayoutManager layoutManager = new 
                    StaggeredGridLayoutManager(1,StaggeredGridLayoutManager.VERTICAL);
                    recyclerView.setLayoutManager(layoutManager);
                    recyclerView.setAdapter(adapter);
                    adapter.notifyDataSetChanged();

                }
            }

            @Override
            public void onFailure(Call<ModelClass_JSONParse> call, Throwable t) {
                Log.v("Res",call.toString());
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

Ven*_*nky 0

不要使用adapter.notifyDataSetChanged();方法,因为我认为你的主视图必须是换行内容,所以要么设置一个固定高度,如 150dp。

尝试不同的方法,如notifyItemChanged()、notifyItemRangeChanged()、notifyItemInserted()