Android 如何正确刷新我的回收者列表视图
我开始在我的新学校项目中使用Android 如何正确刷新我的回收者列表视图,android,performance,android-recyclerview,realm,swiperefreshlayout,Android,Performance,Android Recyclerview,Realm,Swiperefreshlayout,我开始在我的新学校项目中使用RecyclerView,并将RealmDB用作数据源。到目前为止,在刷新列表视图之前,一切都很正常。这是。由于notifyDataSetChanged(),出现黑屏闪烁。我可以设置白色背景,而不是黑色,如果我想让它不那么明显 但我应该使用什么机制来完全消除明显的屏幕闪烁?如果我能像你一样得到同样的结果,我将不胜感激 到目前为止,如何刷新列表视图 第一步。我调用web api来接收帖子 第二步。获取结果并将其更新或添加到#领域 更新 我已将notifyDataSet
RecyclerView
,并将RealmDB
用作数据源。到目前为止,在刷新列表视图之前,一切都很正常。这是。由于notifyDataSetChanged()
,出现黑屏闪烁。我可以设置白色背景,而不是黑色,如果我想让它不那么明显
但我应该使用什么机制来完全消除明显的屏幕闪烁?如果我能像你一样得到同样的结果,我将不胜感激
到目前为止,如何刷新列表视图
- 第一步。我调用web api来接收帖子
- 第二步。获取结果并将其更新或添加到#领域
更新
我已将
更改为notifyDataSetChanged()
。闪烁消失了,动画变得更加流畅:-)伙计们谢谢你们的评论,我通过取消使用notifyItemChanged(I,element)
解决了这个问题 从notifyDataSetChanged()
this.data.addChangeListener(new RealmChangeListener<RealmResults<CommonResult>>() { @Override public void onChange(RealmResults<CommonResult> element) { notifyDataSetChanged(); } });
到this.data.addChangeListener(新的RealmChangeListener(){ @凌驾 更改后的公共void(RealmResults元素){ notifyDataSetChanged(); } });
您如何以及在何处调用listenerHi@Rah的onChange(---)方法,如果此表中有更改,RealmDB将自动调用此方法。请在onChange()方法中添加一些日志,并检查日志触发/打印的次数,因为我发现你有这么多记录,而且这个方法被多次调用NotifyDataSetChanged在this.data.addChangeListener(新的RealmChangeListener(){ @凌驾 更改后的公共void(RealmResults元素){ 项目(要素); i(“onChange()调用时使用:element=[“+element+”]); } }); 私有项目(RealmResults元素){ 对于(int i=0;i
中被调用。最好在onSuccess块中手动更改NotifyDataSetChange调用for(post-post:posts)
this.data.addChangeListener(new RealmChangeListener<RealmResults<CommonResult>>() { @Override public void onChange(RealmResults<CommonResult> element) { notifyDataSetChanged(); } });
this.data.addChangeListener(new RealmChangeListener<RealmResults<CommonResult>>() { @Override public void onChange(RealmResults<CommonResult> element) { notifyDataSetChanged(); } });
this.data.addChangeListener(new RealmChangeListener<RealmResults<CommonResult>>() { @Override public void onChange(RealmResults<CommonResult> element) { notifyItems(element); Timber.i("onChange() called with: element = [" + element + "]"); } }); private void notifyItems(RealmResults<CommonResult> element){ for (int i = 0; i < element.size(); i++) { notifyItemChanged(i, element.get(i)); } }