ListView中的局部刷新

该博客介绍如何在Android的ListView中实现局部更新,以展示多个下载进度条。通过Handler异步更新UI和ListView的Adapter实现局部刷新,详细讲解了创建AppItem类、Adapter、更新方法及使用线程模拟下载进度更新的过程。还提到了防止内存泄漏和提高效率的策略。
摘要由CSDN通过智能技术生成

在列表中显示多个下载进度条是一个很常见的需求了,
这个需求主要涉及到以下两个技术点:
1.Handler异步更新UI
2.ListView进行局部更新

今天来看一下这一功能最简单的实现——模仿多个APP下载更新进度条。
为了让代码简单一些,在这里使用了ListView显示列表,直接使用线程控制进度更新。

首先,来创建一个AppItem的类在ListView中显示项目:

public class AppItem {
   

    private String appName;
    private int currentProgress;
    private int appIndex;

    public AppItem(String name, int index) {
        appName = name;
        currentProgress = 0;
        appIndex = index;
    }

    public String getAppName() {
        return appName;
    }

    public void setCurrentProgress(int progress) {
        currentProgress = progress;
    }

    public int getCurrentProgress() {
        return currentProgress;
    }

    public int getAppIndex() {
        return appIndex;
    }
}

为简单说明,列表项设定的很简单,仅有应用名称,下载进度和项目在列表中的index这三个元素。
下载进度默认为0,在创建项目时必须提供应用名称和index数值。

然后来编写ListView的Adapter.
在这里,考虑到应用下载时进度条时刻变化,并且各项之间没有同步关系,因此需要提供一个方法来允许我们更新ListView中的某一项,而不是每次调用notifyDataSetChanged更新整个list,那样会非常耗费资源。
同时,还需要创建一个ViewHolder并使用缓存机制节省内存。

class AppListAdapter extends BaseAdapter {
        //为描述简便,将Adapter直接定义在MainActivity,并且直接读取Activity中的mData(ArrayList)

        LayoutInflater mInflater;

        public AppListAdapter(Context context)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值