1. 程式人生 > >listView使用checkBox的實現

listView使用checkBox的實現

 

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);