Den*_*aci 34 android redraw android-recyclerview
有没有办法重绘所有项目RecyclerView?
我有一些主题(在style.xml中),在更改主题后,我需要RecyclerView重新绘制.
所以我想要一个强制重新调用onCreateViewHolder适配器的每个项目的方法.
我试过了:
adapter.notifyDataSetChanged但onCreateViewHolder没有打电话recyclerView.setVisibility(View.GONE)然后打电话recyclerView.setVisibility(View.VISIBLE)recyclerView.invalidate()recyclerView.setAdapter(null)然后打电话recyclerView.setAdapter(adapter).我提到它RecyclerView附加到一个Activity,而不是一个Fragment.
Den*_*aci 26
我找到了答案!正确的方法是:
recyclerView.setAdapter(null);
recyclerView.setLayoutManager(null);
recyclerView.setAdapter(myAdapter);
recyclerView.setLayoutManager(myLayoutManager);
myAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
在那之后,所有项目都获得了新的风格!
kos*_*cki 13
简单地设置recyclerview的适配器再次为我工作(我希望RecyclerView重新绘制所有项目的布局)
/**
* Forces RecyclerView adapter to call createViewHolder() - i.e. redraw all all items' layouts
*/
private fun resetAdapterState() {
val myAdapter = recyclerView.adapter
recyclerView.adapter = myAdapter
}
Run Code Online (Sandbox Code Playgroud)
重置适配器对我有用,我在里面称之为onConfigChange
myRecyclerView.setAdapter(myAdapter)
Run Code Online (Sandbox Code Playgroud)
小智 7
如果要强制重绘,则需要清除View Pool of RecycleView.您可以使用recyclerView.getRecycledViewPool().clear();
小智 7
我知道这已经很旧了,但我遇到了一种情况,我需要在notifyDataSetChanged(). 如果适配器已经有数据,则onCreateViewHolder由于 recycleviewadapter 的“回收”部分而不会被调用,因此会在onBindViewHolder.
我能够通过在调用适配器myRecyclerView.getLayoutManager().removeAllViews();之前调用来解决此问题。notifyDataSetChanged();
下面的代码行为我做了诀窍
recyclerview.swapAdapter(myAdapter,false);
recyclerview.setLayoutManager(myLayoutManager);
myAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24288 次 |
| 最近记录: |