ListView的单项刷新

本文介绍了一种不使用RecycleView的情况下,在ListView中实现单个条目刷新的方法,避免了整个列表的重新加载,提高了用户体验。

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

情形

不使用RecycleView,实现ListView的单项的刷新,而不去刷新整个列表。

实现

通过ListView.getChildAt()方法,获取到item的View,然后进行数据刷新。

这里注意getChildAt()中的position是展示界面的位置,不是整个ListView的位置。

    /**
     * 更新单个Item UI
     *
     * @param itemIndex 位置
     * @author fengzhen
     * @version v1.0, 2017/6/5 17:41
     */
    public void updateProgress(int itemIndex) {
        // 获取可视列表第一个Item的位置
        int visiblePosition = mListView.getFirstVisiblePosition();
        // 获取可视列表最后一个Item的位置
        int lastVisiblePosition = mListView.getLastVisiblePosition();
        // 判断将更新的Item 处于视野范围内,
        // 否则不用进行更新,只需要处理数据源
        if (visiblePosition <= itemIndex && itemIndex <= lastVisiblePosition) {
            // 必须获取可视界面的Item
            View view = mListView.getChildAt(itemIndex - visiblePosition);
            // 还未加载到的item不能修改
            if (view == null) return;
            // 获取Item绑定的ViewHolder
            ViewHolder holder = null;
            Object tag = childAt.getTag();
            if (tag instanceof ReleaseListAdapter.ViewHolder) {
                holder = (ViewHolder) tag;
            } else {
                return;
            }
            // 更新Item的UI位置
            ...
        }
    }

如此,便可以实现ListView的单项刷新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值