RecyclerView适配器notifyDataSetChanged无法正常工作

Dav*_*vid 27 android android-adapter notifydatasetchanged android-recyclerview

我延长了

RecyclerView.Adapter<RecyclerView.ViewHolder>
Run Code Online (Sandbox Code Playgroud)

当我打电话的时候:

mRecyclerView.getAdapter().notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

没啥事儿.

刷新视图的唯一方法是再次设置适配器(请参阅此答案):

mRecyclerView.setAdapter(new MyAdapter(...));
Run Code Online (Sandbox Code Playgroud)

这个解决方案有两个问题:

  1. 当我再次设置适配器时,我可以看到屏幕上闪烁
  2. 列表视图返回第一个位置.

有任何想法吗?

Var*_*ina 28

如果notifyDataSetChanged()没有触发视图更新,那么您可能忘记调用SetLayoutManager()RecyclerView(就像我做的那样!).只是不要忘记这样做: Java代码:

LinearLayoutManager layoutManager = new LinearLayoutManager(context ,LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager)
Run Code Online (Sandbox Code Playgroud)

C#代码,我正在使用Xamarin.

var layoutManager = new LinearLayoutManager(Context, LinearLayoutManager.Vertical, false);
recyclerView.SetLayoutManager(layoutManager);
Run Code Online (Sandbox Code Playgroud)

在你打电话之前recyclerView.SetAdapter(adapter);


Igo*_*sky 24

如果你的getItemCount()回报为0,那么notifyDataSetChanged()就不会做任何事情.确保在初始化适配器时传递有效数据集.