listView使用checkBox的實現
阿新 • • 發佈:2018-10-31
listView裡面使用checkBox;
public class MainActivity extends AppCompatActivity { private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { lv = (ListView) findViewById(R.id.lv); lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); lv.setAdapter(new MyAdapter()); } class MyAdapter extends BaseAdapter { @Override public int getCount() { return 100; } @Override public Object getItem(int i) { return null; } @Override public long getItemId(int i) { return i; } @Override public View getView(final int postion, View convertView, ViewGroup viewGroup) { if (convertView == null) { convertView = View.inflate(MainActivity.this, R.layout.item, null); } final AppCompatCheckBox checkBox = (AppCompatCheckBox) convertView.findViewById(R.id.checkbox); checkBox.setChecked(lv.isItemChecked(postion)); checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.i("lalalla","onClick"+checkBox.isChecked()); lv.setItemChecked(postion,checkBox.isChecked()); Log.i("lalalla","CheckedItemCount = "+lv.getCheckedItemCount()); Log.i("lalalla","CheckedItemCount = "+lv.getCheckedItemPositions()); } }); return convertView; } } }
simpleAdapter裡面使用checkBox:
SimpleAdapter adapter = new SimpleAdapter(this,items,R.layout.item,new String []{"isSelected","name","number"},new int[] {R.id.check,R.id.name,R.id.number}){ @Override public View getView(final int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); @SuppressWarnings("unchecked") final HashMap<String,Object> map = (HashMap<String, Object>) this.getItem(position); //獲取相應View中的Checkbox物件 CheckBox checkBox = (CheckBox)view.findViewById(R.id.check); checkBox.setChecked((Boolean) map.get("isSelected")); //新增單擊事件,在map中記錄狀態 // 通過判斷checkbox是否被選中來確定聯絡人是否被放在names和numbers兩個陣列中。 checkBox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { map.put("isSelected", ((CheckBox)view).isChecke()); if(((CheckBox)view).isChecked()){ Toast.makeText(ListContacts.this,"選中了"+ map.get("name"), 0).shou (); names.add((String) map.get("name")); numbers.add((String) map.get("number")); }else{ names.remove(map.get("name")); numbers.remove(map.get("number")); } } }); return view; } }; list.setAdapter(adapter);