Android的Listview的ListAdapter关于View的经典写法

本文介绍了一种文件列表适配器的具体实现方法,该适配器用于Android应用中的文件下载管理,通过自定义BaseAdapter子类实现了文件列表的动态更新,并集成了开始和停止下载的功能。

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

/**
 * 文件列表适配器
 */
public class FileListAdapter extends BaseAdapter {


private Context mContext = null;
private List<FileInfo> mFileList = null;

public FileListAdapter(Context mContext, List<FileInfo> mFileList) {
super();
this.mContext = mContext;
this.mFileList = mFileList;
}


/**
* getCount方法用于返回需要在ListView上显示的数据的总数
* 要让文件集合中的文件显示在列表上
* 返回的是文件集合对象的size()方法,返回文件个数
*/
@Override
public int getCount() {
return mFileList.size();
}


@Override
public Object getItem(int position) {
return mFileList.get(position);
}


@Override
public long getItemId(int position) {
return position;
}


@Override
public View getView(int position, View view, ViewGroup viewGroup) {
ViewHolder holder = null;
if (view == null) {
//加载视图
view = LayoutInflater.from(mContext).inflate(R.layout.listitem, null);
//获取布局中的控件
holder = new ViewHolder();
holder.tv_fileName = (TextView) view.findViewById(R.id.tv_fileName);
holder.btn_start = (Button) view.findViewById(R.id.btn_start);
holder.btn_stop = (Button) view.findViewById(R.id.btn_stop);
holder.pb_progress = (ProgressBar) view.findViewById(R.id.pb_progress);
view.setTag(holder);
}else {
holder = (ViewHolder) view.getTag();
}
//设置视图中的控件
final FileInfo fileInfo = mFileList.get(position);
holder.tv_fileName.setText(fileInfo.getFileName());
holder.pb_progress.setMax(100);
holder.pb_progress.setProgress(fileInfo.getFinished());
holder.btn_start.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 通过Intent传递参数给Service
Intent intent = new Intent(mContext, DownloadService.class);
intent.setAction(DownloadService.ACTION_START);
intent.putExtra("fileInfo", fileInfo);
mContext.startService(intent);
}
});
holder.btn_stop.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 通过Intent传递参数给Service
Intent intent = new Intent(mContext, DownloadService.class);
intent.setAction(DownloadService.ACTION_STOP);
intent.putExtra("fileInfo", fileInfo);
mContext.startService(intent);
}
});
return view;
}

/**
* ViewHolder就是一个临时的存储器
* 把每次getView()方法中每次返回的View缓存起来,可以下次再用
* 这样做的好处就是不必每次都到布局文件中来查找控件
*/
static class ViewHolder{
TextView tv_fileName;
Button btn_stop,btn_start;
ProgressBar pb_progress;
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值