Android ListView局部刷新数据

本文介绍了一种在Android中只刷新ListView单条数据的方法,避免了不必要的全列表刷新,提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于ListView、Gridview刷新列表我们并不陌生,只需要在数据源改变之后,调用BaseAdapter的notifyDataSetChanged方法,就可以刷新列表了。但是,如果我们只改变了某一行item的数据,只需要刷新单条item,也去调用notifyDataSetChanged方法,就显得没必要了,因为我们并不需要去刷新其它的item。在这里,我们需要一种方法,只刷新单条数据,而不是刷新整个列表。

Google向我们推荐了一种写法,当需要改变某一行的数据时,只需要调用该行的getView()即可,代码如下:

public void notifyDataSetChanged(ListView listView,int position){
        int firstVisiblePosition = listView.getFirstVisiblePosition();
        int lastVisiblePosition = listView.getLastVisiblePosition();
        if(position >= firstVisiblePosition && position <= lastVisiblePosition){
            View item = listView.getChildAt(position - firstVisiblePosition);
            getView(position,item,listView);
        }
    }

由于ListView是复用缓存convertView的,所以converView的个数是屏幕上能显示的条数那么多,并且只刷新屏幕当中我们可以看到的数据,看不到的就没必要刷新了。我们根据position拿到需要更新的那个item,调用一次getView,就实现了局部刷新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值