更新RecyclerView的好方法_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 更新RecyclerView的好方法

更新RecyclerView的好方法

 2017/6/14 5:32:32  zhangmiao14  程序员俱乐部  我要评论(0)
  • 摘要:一般在使用RecyclerView的时候不免要修改RecyclerView的数据,使用notifyDataSetChanged()来刷新界面,但是当数据比较多,而只是修改了一点的数据,或者刷新比较频繁,这样就会导致界面的卡顿问题,用户交互特别不好。这个时候就需要只是修改需要修改的数据,不要将数据全部进行更新,这样就可以解决问题。局部更新的代码如下:privateintposition;//当前recyclerview的position@BindView(R.id
  • 标签:方法 view

  一般在使用RecyclerView的时候不免要修改RecyclerView的数据,使用notifyDataSetChanged()来刷新界面,但是当数据比较多,而只是修改了一点的数据,或者刷新比较频繁,这样就会导致界面的卡顿问题,用户交互特别不好。

  这个时候就需要只是修改需要修改的数据,不要将数据全部进行更新,这样就可以解决问题。

  局部更新的代码如下:

  

private int position;//当前recyclerview的position

@BindView(R.id.speak_valuate_recycler_view)
RecyclerView recyclerView;

private LinearLayoutManager mRecyclerViewLayoutManager;

mRecyclerViewLayoutManager = new LinearLayoutManager(this);
mRecyclerViewLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(mRecyclerViewLayoutManager);

private void changVolume(final int volume) {
        int first = mRecyclerViewLayoutManager.findFirstVisibleItemPosition();
        int last = mRecyclerViewLayoutManager.findLastVisibleItemPosition();

        if (position >= first && position <= last) {
            View view = recyclerView.getChildAt(position - first);
            if (recyclerView.getChildViewHolder(view) instanceof SpeakContentAdapter.SpeakContentHolder) {
                //修改数据
                ProgressImageView progressImageView = (ProgressImageView) view.findViewById(R.id.speak_item_record);
                progressImageView.setProgress(volume);
            }
        }
    }        

 

发表评论
用户名: 匿名