Android uidesign-multiple selection and deletion of embedded checkbox in listview

Source: Internet
Author: User

Sometimes a checkbox needs to be built in the listview of the project for the user to choose, select multiple, delete, and so on.

First look at the source code

Dataitem. Java

package com.example.checkboxdemo;public class DataItem {private String title;private boolean flag;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public boolean getFlag() {return flag;}public void setFlag(boolean flag) {this.flag = flag;}}

Myadapter. Java

package com.example.checkboxdemo;import java.util.ArrayList;import java.util.HashMap;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.TextView;import com.example.checkboxdemo.MainActivity.ViewHolder;public class MyAdapter extends BaseAdapter {public ArrayList<DataItem> mVideoList;private Context context;private LayoutInflater mInflater = null;public MyAdapter(Context context, ArrayList<DataItem> list){this.context = context;this.mVideoList = list;mInflater = LayoutInflater.from(context);}@Overridepublic int getCount() {return mVideoList.size();}@Overridepublic Object getItem(int position) {return mVideoList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder mHolder = null;if(null == convertView){mHolder = new ViewHolder();convertView = mInflater.inflate(R.layout.test_item, null);mHolder.mTitle = (TextView)convertView.findViewById(R.id.item_tv);mHolder.mCheck = (CheckBox)convertView.findViewById(R.id.item_cb);convertView.setTag(mHolder);}else{mHolder = (ViewHolder)convertView.getTag();}mHolder.mTitle.setText(mVideoList.get(position).getTitle());mHolder.mCheck.setChecked(mVideoList.get(position).getFlag());return convertView;}}

Mainactivity. Java

Package COM. example. checkboxdemo; import Java. util. arraylist; import Java. util. hashmap; import android. app. activity; import android. OS. bundle; import android. view. view; import android. view. view. onclicklistener; import android. widget. adapterview; import android. widget. adapterview. onitemclicklistener; import android. widget. button; import android. widget. checkbox; import android. widget. listview; import android. WID Get. textview; import android. widget. toast; public class mainactivity extends activity {private listview mvideoview; private myadapter madapter; private arraylist <dataitem> mvideolist; private button mcheckallbtn; private button muncheckallbtn; private button mcancelbtn; private button secret; string STR [] = {"item0", "Item1", "item2", "item3", "item4", "item5", "item6", "item7 ", "item8", "item9", "item10", "I Tem11 "," item12 "}; @ overrideprotected void oncreate (bundle savedinstancestate) {super. oncreate (savedinstancestate); setcontentview (R. layout. activity_main); initviews (); initlisteners ();} private void initviews () {mvideoview = (listview) findviewbyid (R. id. LV); mcheckallbtn = (button) findviewbyid (R. id. checkall); muncheckallbtn = (button) findviewbyid (R. id. uncheckall); mcancelbtn = (button) findviewbyid (R. id. canc Elcheck); mdeleteitembtn = (button) findviewbyid (R. id. deleteitem); mvideolist = new arraylist <dataitem> (); initdata ();} private void initdata () {for (INT I = 0; I <Str. length; I ++) {dataitem item = new dataitem (); item. settitle (STR [I]); item. setflag (false); mvideolist. add (item);} madapter = new myadapter (this, mvideolist); mvideoview. setadapter (madapter);} private void initlisteners () {mcheckallbtn. setonclickli Stener (New onclicklistener () {@ overridepublic void onclick (view v) {for (INT I = 0; I <mvideolist. size (); I ++) {mvideolist. get (I ). setflag (true);} madapter. notifydatasetchanged () ;}}); muncheckallbtn. setonclicklistener (New onclicklistener () {@ overridepublic void onclick (view v) {for (INT I = 0; I <mvideolist. size (); I ++) {mvideolist. get (I ). setflag (false);} madapter. notifydatasetchanged () ;}}); mcancelbtn. s Etonclicklistener (New onclicklistener () {@ overridepublic void onclick (view v) {for (INT I = 0; I <mvideolist. size (); I ++) {If (mvideolist. get (I ). getflag () {mvideolist. get (I ). setflag (false);} else {mvideolist. get (I ). setflag (true) ;}} madapter. notifydatasetchanged () ;}}); mdeleteitembtn. setonclicklistener (New onclicklistener () {@ overridepublic void onclick (view v) {/*** you cannot directly operate on mvideolist here. You need to cache it to a list to clear it. Otherwise */Arraylist <dataitem> deletelist = new arraylist <dataitem> (); For (INT I = 0; I <mvideolist. size (); I ++) {If (mvideolist. get (I ). getflag () {deletelist. add (mvideolist. get (I) ;}} mvideolist. removeall (deletelist); deletelist. clear (); madapter. notifydatasetchanged () ;}}); mvideoview. setonitemclicklistener (New onitemclicklistener () {@ overridepublic void onitemclick (adapterview <?> Parent, view, int position, long ID) {viewholder holder = (viewholder) view. gettag (); // change the status of the checkbox holder. mcheck. toggle (); madapter. mvideolist. get (position ). setflag (holder. mcheck. ischecked () ;}}) ;}static class viewholder {public textview mtitle; Public checkbox mcheck ;}}

Note the following item checkbox definition. If three lines of code are not added in red, onitemclicklistener will become invalid.

Test_item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:gravity="center_vertical"    android:orientation="horizontal" >        <TextView         android:id="@+id/item_tv"        android:layout_width="0dip"        android:layout_height="wrap_content"        android:layout_marginLeft="20dp"        android:layout_weight="1"        android:gravity="center_vertical"        />    <CheckBox         android:id="@+id/item_cb"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:clickable="false"        android:focusable="false"        android:focusableInTouchMode="false"        android:gravity="center_vertical"        /></LinearLayout>

Not much said, all in the Code, there is a picture of the truth

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

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.