带有CheckBox的ListView,实现删除和选中功能

本文介绍如何在Android中实现一个ListView,其中包含CheckBox,用于实现选择和删除功能。通过自定义Adapter,结合getView方法设置CheckBox的状态,并在点击事件中更新数据。布局文件包括image、textview和checkbox,注意对checkbox的focusable属性进行设置。在Activity中,监听ListView的点击事件,根据CheckBox的状态更新数据,并提供删除功能。
摘要由CSDN通过智能技术生成

Android实现带有CheckBox的ListView


[html]  view plain copy
  1. package com.zwq.umeng;      
  2.       
  3. import java.util.ArrayList;      
  4. import java.util.HashMap;      
  5. import java.util.List;      
  6. import java.util.Map;      
  7.       
  8. import android.content.Context;      
  9. import android.view.LayoutInflater;      
  10. import android.view.View;      
  11. import android.view.ViewGroup;      
  12. import android.widget.BaseAdapter;      
  13. import android.widget.CheckBox;      
  14. import android.widget.ImageView;      
  15. import android.widget.TextView;      
  16.       
  17. public class MyAdapter extends BaseAdapter {      
  18.     private LayoutInflater mInflater;      
  19.     private List<Map<String, Object>> mData;      
  20.     public static Map<Integer, Boolean> isSelected;      
  21.       
  22.     public MyAdapter(Context context) {      
  23.         mInflater = LayoutInflater.from(context);      
  24.         init();      
  25.     }      
  26.       
  27.     //初始化      
  28.     private void init() {      
  29.         mData=new ArrayList<Map<String, Object>>();      
  30.         for (int i = 0; i < 5; i++) {      
  31.             Map<String, Object> map = new HashMap<String, Object>();      
  32.             map.put("img", R.drawable.icon);      
  33.             map.put("title", "第" + (i + 1) + "行的标题");      
  34.             mData.add(map);      
  35.         }      
  36.         //这儿定义isSelected这个map是记录每个listitem的状态,初始状态全部为false。      
  37.         isSelected = new HashMap<Integer, Boolean>();      
  38.         for (int i = 0; i < mData.size(); i++) {      
  39.             isSelected.put(i, false);      
  40.         }      
  41.     }      
  42.       
  43.     @Override      
  44.     public int getCount() {      
  45.         return mData.size();      
  46.     }      
  47.       
  48.     @Override      
  49.     public Object getItem(int position) {      
  50.         return null;      
  51.     }      
  52.       
  53.     @Override      
  54.     public long getItemId(int position) {      
  55.         return 0;      
  56.     }      
  57.       
  58.     @Override      
  59.     public View getView(int position, View convertView, ViewGroup parent) {      
  60.         ViewHolder holder = null;      
  61.         //convertView为null的时候初始化convertView。      
  62.         if (convertView == null) {      
  63.             holder = new ViewHolder();      
  64.             convertView = mInflater.inflate(R.layout.vlist, null);      
  65.             holder.img = (ImageView) convertView.findViewById(R.id.img);      
  66.             holder.title = (TextView) convertView.findViewById(R.id.title);      
  67.             holder.cBox = (CheckBox) convertView.findViewById(R.id.cb);      
  68.             convertView.setTag(holder);      
  69.         } else {      
  70.             holder = (ViewHolder) convertView.getTag();      
  71.         }      
  72.         holder.img.setBackgroundResource((Integer) mData.get(position).get(      
  73.                 "img"));      
  74.         holder.title.setText(mData.get(position).get("title").toString());      
  75.         holder.cBox.setChecked(isSelected.get(position));      
  76.         return convertView;      
  77.     }      
  78.       
  79.     public final class ViewHolder {      
  80.         public ImageView img;      
  81.         public TextView title;      
  82.         public CheckBox cBox;      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值