ListView或者说Adapter的刷新方式

当ListView中的数据发生了改变,我们希望刷新ListView中的View时,有两种方式:
第一种,全部刷新:
进行adapter.NotifyDataSetChanged();
看一下它的源码
  1. public void notifyChanged() {   
  1.     synchronized (mObservers) {   
  1.         // 向每一个子View发送onChanged   
  1.         for (int i = mObservers.size() - 1; i >= 0; i--) {   
  1.             mObservers.get(i).onChanged();   
  1.         }   
  1.     }   
  1. }

第二种,单个View刷新:
第一种方式:我们可以发现它针对每一个子View都做了刷新,当然,如果我们的数据都变量还可以理解。但是,一般条件下,我们需要更新的View不多。频繁的调用 NotifyDataSetChanged方法,刷新整个界面不合适。这样会把界面上显示的所有item都全部重绘一次,即使只有一个view的内容发生 了变化。
所以,我们可以写一个update的方法,来单独刷新一个View
  1. private void updateView(int itemIndex){   
  1.     intvisiblePosition = yourListView.getFirstVisiblePosition();   
  1.     Viewv = yourListView.getChildAt(itemIndex - visiblePosition);   
  1.          ViewHolder viewHolder =(ViewHolder)v.getTag();   
  1.          if(viewHolder!= null){   
  1.                viewHolder.titleTextView.setText("我更新了");   
  1.          }      
  1. }   
其中itemIndex为你想更新的items序号。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值