listView中做点击checkBox实现单选框

  1. public class ChoiceActivity extends Activity {  
  2.  
  3.     private ListView listView;  
  4.       
  5.     private Map<Integer, Boolean> isSelected;  
  6.       
  7.     private List beSelectedData = new ArrayList();    
  8.       
  9.     ListAdapter adapter;  
  10.       
  11.     private List cs = null;  
  12.       
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.main);  
  17.         listView = (ListView) this.findViewById(R.id.lv_single_list);  
  18.         cs  = new ArrayList();  
  19.         cs.add("aaaaaa");  
  20.         cs.add("bbbbbb");  
  21.         cs.add("cccccc");  
  22.         cs.add("dddddd");  
  23.         cs.add("eeeeee");  
  24.         cs.add("ffffff");  
  25.         cs.add("gggggg");  
  26.         cs.add("hhhhhh");  
  27.         cs.add("jjjjjj");  
  28.           
  29.         initList();  
  30.     }  
  31.       
  32.     void initList(){  
  33.           
  34.         if (cs == null || cs.size() == 0)  
  35.             return;  
  36.         if (isSelected != null)  
  37.             isSelected = null;  
  38.         isSelected = new HashMap<Integer, Boolean>();  
  39.         for (int i = 0; i < cs.size(); i++) {  
  40.             isSelected.put(i, false);  
  41.         }  
  42.         // 清除已经选择的项  
  43.         if (beSelectedData.size() > 0) {  
  44.             beSelectedData.clear();  
  45.         }  
  46.         adapter = new ListAdapter(this, cs);  
  47.         listView.setAdapter(adapter);  
  48.         listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);  
  49.         adapter.notifyDataSetChanged();  
  50.         listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
  51.             public void onItemClick(AdapterView<?> parent, View view,  
  52.                     int position, long id) {  
  53.                Log.i("map", cs.get(position).toString());  
  54.             }  
  55.         });  
  56.           
  57.     }  
  58.       
  59.     class ListAdapter extends BaseAdapter {  
  60.   
  61.         private Context context;  
  62.   
  63.         private List cs;  
  64.   
  65.         private LayoutInflater inflater;  
  66.   
  67.         public ListAdapter(Context context, List data) {  
  68.             this.context = context;  
  69.             this.cs = data;  
  70.             initLayoutInflater();  
  71.         }  
  72.   
  73.         void initLayoutInflater() {  
  74.             inflater = LayoutInflater.from(context);  
  75.         }  
  76.   
  77.         public int getCount() {  
  78.             return cs.size();  
  79.         }  
  80.   
  81.         public Object getItem(int position) {  
  82.             return cs.get(position);  
  83.         }  
  84.   
  85.         public long getItemId(int position) {  
  86.             return 0;  
  87.         }  
  88.   
  89.         public View getView(int position1, View convertView, ViewGroup parent) {  
  90.             ViewHolder holder = null;  
  91.             View view = null;  
  92.             final int position = position1;  
  93.             if (convertView == null) {  
  94.                 convertView = inflater.inflate(R.layout.list_adapter,  
  95.                         null);  
  96.                 holder = new ViewHolder();  
  97.                 holder.checkBox = (CheckBox) convertView  
  98.                         .findViewById(R.id.item_cb_section);  
  99.                 holder.tv_sequence = (TextView) convertView  
  100.                         .findViewById(R.id.tv_zxing_section_sequence);  
  101.                 holder.tv_sectionname = (TextView) convertView  
  102.                         .findViewById(R.id.tv_zxing_sectionname);  
  103.                 convertView.setTag(holder);  
  104.             } else {  
  105.                 view = convertView;  
  106.                 holder = (ViewHolder) view.getTag();  
  107.             }             
  108.             holder.checkBox.setOnClickListener(new OnClickListener() {  
  109.                 public void onClick(View v) {  
  110.                     // 当前点击的CB  
  111.                     boolean cu = !isSelected.get(position);  
  112.                     // 先将所有的置为FALSE  
  113.                     for(Integer p : isSelected.keySet()) {  
  114.                         isSelected.put(p, false);  
  115.                     }  
  116.                     // 再将当前选择CB的实际状态  
  117.                     isSelected.put(position, cu);  
  118.                     ListAdapter.this.notifyDataSetChanged();  
  119.                     beSelectedData.clear();  
  120.                     if(cu) beSelectedData.add(cs.get(position));  
  121.                 }  
  122.             });  
  123.             holder.tv_sequence.setText(String.valueOf(position + 1));  
  124.             holder.tv_sectionname.setText(cs.get(position).toString());  
  125.             holder.checkBox.setChecked(isSelected.get(position));  
  126.             return convertView;  
  127.         }  
  128.     }  
  129.       
  130.     class ViewHolder {  
  131.   
  132.         CheckBox checkBox;  
  133.   
  134.         TextView tv_sequence;  
  135.   
  136.         TextView tv_sectionname;  
  137.   
  138.     }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值