Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何正确刷新我的回收者列表视图_Android_Performance_Android Recyclerview_Realm_Swiperefreshlayout - Fatal编程技术网

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

    this.data.addChangeListener(新的RealmChangeListener(){
    @凌驾
    更改后的公共void(RealmResults元素){
    项目(要素);
    i(“onChange()调用时使用:element=[“+element+”]);
    }
    });
    私有项目(RealmResults元素){
    对于(int i=0;i
    您如何以及在何处调用listenerHi@Rah的onChange(---)方法,如果此表中有更改,RealmDB将自动调用此方法。请在onChange()方法中添加一些日志,并检查日志触发/打印的次数,因为我发现你有这么多记录,而且这个方法被多次调用NotifyDataSetChanged在
    for(post-post:posts)
    中被调用。最好在onSuccess块中手动更改NotifyDataSetChange调用
    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));
            }
        }