zoukankan      html  css  js  c++  java
  • 挑战练习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的变化,可以得知后退时没有变化


  • 相关阅读:
    rstudio命令行操作
    HTTP缓存机制
    F5和Ctrl F5
    g++与gcc区别
    C++中long long和long
    拉链法哈希表实现
    tcp中的带外数据
    LSGAN
    随机森林分类器学习
    python中cls关键字
  • 原文地址:https://www.cnblogs.com/real1587/p/9923948.html
Copyright © 2011-2022 走看看