gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 00:51:49 26 4
gpt4 key购买 nike

我正在尝试使用 recyclerview 制作类似于视频的布局。我制作了一个 recyclerview,它会在一定时间间隔后更新列表,但问题是在数据更新后它会自动滚动到顶部位置。我想制作类似视频的东西。 https://youtu.be/omcS-6LeKoo 我试过来自 SO 的链接 RecyclerView scrolls to top position when change the adapter data RecyclerView notifyDataSetChanged scrolls to top position但无法解决。下面是我的尝试

@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());
}
});
}

最佳答案

这些代码行导致了您的问题。每次调用 API 时,您都会设置一个新的适配器引用和线性布局管理器引用。

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

要完成您想要的任务,您需要执行以下步骤 -

  1. 只需首次设置您的 LayoutManageradapter
  2. 在您的适配器类中创建一个setDataList 方法。并将更新列表设置为适配器列表。
  3. 然后每次调用 API 时将该列表设置为 setDataList 并调用适配器类的 adapter.notifyDataSetChanged() 方法。

以上步骤将解决您的问题。试试看吧。

关于android - 如何停止刷新 recyclerview 数据滚动到顶部位置 android 每次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58849910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com