ListView的单项刷新

来源:互联网 发布:人工智能原理及其应用 编辑:程序博客网 时间:2024/06/06 01:40

情形

不使用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的单项刷新。

原创粉丝点击