【Android】ListView相關——與CheckBox的完美結合

來源:互聯網
上載者:User

Android系統的設定菜單,是由一個大的ListView組成的,其中有不少cell中都包含CheckBox,比如無線網,飛航模式等。

如果想自己做一個類似的應用,就需要用到ListView的adapter了。

另外我們需要藉助一下HashMap~

本文實現的功能是將ListView子項中的CheckBox與ListView分離出來,即點擊ListView的子項實現的是查看ListView子項的內容,點擊子項中的CheckBox來實現CheckBox的選中與否,我們這裡做的ListView的監聽是System.out出所點擊的ListView的位置。

初始化資料

data = new ArrayList<HashMap>();for (int i = 0; i < 20; i++) {map = new HashMap();map.put("title", "title-->" + i);map.put("content", "content--" + i);data.add(map);}

設定ListView

adapter = new MyAdapter(CheckList.this, data);mListView.setAdapter(adapter);// 為listview的子項添加點擊事件,position就是原來的arg2mListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {System.out.println("您所點擊的行號是:" + position);}});

定義我們需要的adapter

int count = scroll_num;Context mContext;ArrayList<HashMap> mData;LayoutInflater mInflater;public MyAdapter(Context context, ArrayList<HashMap> data) {this.mContext = context;this.mData = data;mInflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);if (count > mData.size()) {count = mData.size();}isSelected = new HashMap<Integer, Boolean>();for (int i = 0; i < data.size(); i++) {isSelected.put(i, false);}}@Overridepublic int getCount() {return mData.size();}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(final int position, View convertView,ViewGroup parent) {if (convertView == null) {convertView = mInflater.inflate(R.layout.item_listview, null);holder = new ViewHolder();holder.content = (TextView) convertView.findViewById(R.id.item_listview_content);holder.checkBox = (CheckBox) convertView.findViewById(R.id.item_listview_checkbox);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.content.setText(data.get(position).get("content").toString());holder.checkBox.setChecked(isSelected.get(position));holder.checkBox.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (isSelected.get(position)) {isSelected.put(position, false);} else {isSelected.put(position, true);}notifyDataSetChanged();}});return convertView;}

最後再定義一個xml的adapter

工程資源:http://download.csdn.net/detail/etzmico/3780822

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.