• 挑战练习10.6 实现高效的RecyclerView刷新


    把原本使用的Adapter的notifyDataSetChanged方法换成定位刷新RecyclerView.Adapter的notifyItem。


    1.在CrimeListFragment里面定义一个全局变量

     1 private static int mCrimeIndex; 

    2.修改CrimeListFragment下的onClick方法

    1  @Override
    2         public void onClick(View v) {
    3             Intent intent = CrimeActivity.newIntent(getActivity(),mCrime.getmId());
    4             mCrimeIndex = getAdapterPosition();//返回数据在Adapter中的位置
    5             //Log.d("onClick","mCrimeIndex "+mCrimeIndex);
    6             startActivity(intent);
    7         }

    3.修改updateUI方法

     1 private void updateUI(){
     2         CrimeLab crimeLab = CrimeLab.get(getActivity());
     3         List<Crime> crimes = crimeLab.getmCrimes();
     4         if(mAdapter == null){
     5             mAdapter = new CrimeAdapter(crimes);
     6             mCrimeRecyclerView.setAdapter(mAdapter);
     7         }else {
     8             //重绘当前可见区域
     9             //mAdapter.notifyDataSetChanged();
    10 
    11             //部分重绘
    12             mAdapter.notifyItemChanged(mCrimeIndex);
    13         }
    14     }

    4.运行效果:

    5.用调试信息输出看看mCrimeIndex的变化,可以得知后退时没有变化


  • 相关阅读:
    /sbin/nologin 和 /bin/false 的区别
    lesson
    df 命令详解
    课后习题-7 阶段汇总
    javascript Window Navigator
    javascript 正则表达式
    linux crontab 的使用
    linux环境变量
    linux第一个C语言和sh脚本
    linux 文件常用操作
  • 原文地址:https://www.cnblogs.com/real1587/p/9923948.html
Copyright © 2020-2023  润新知