Usually in the out-of-the-box menu will often use the multi-select ListView, you can improve after adding their own projects. Here's a look at the code:
One, the code
1.main.xml: (consisting of a ListView and a button)
<?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=" match_parent " android:o rientation= "vertical" > <listview android:id= "@+id/drink_list" android:layout_width= "Fill_ Parent " android:layout_height=" 0DP " android:layout_weight=" 1 "> </ListView> < Button android:id= "@+id/btn_commit" android:layout_width= "match_parent" android:layout_height= " 58DP " android:text=" OK "/></linearlayout>
2.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=" match_parent "android:background=" #ffffff " android:orientation= "Horizontal" > <checkbox android:id= "@+id/check_box" android:layout_width= "Wra P_content "android:layout_height=" Wrap_content "android:clickable=" false "android:focusable=" false " Android:focusableintouchmode= "true"/> <imageview android:id= "@+id/food_imager" android:layou T_width= "50DP" android:layout_height= "50DP" android:background= "#ffffff"/> <textview androi D:id= "@+id/food_name" android:layout_width= "100DP" android:layout_height= "50DP" android:text= "Coffee" Android:gravity= "center_vertical" android:layout_marginleft= "10DP" android:textsize= "18sp"/> < TextView Android:layout_widtH= "Wrap_content" android:layout_height= "50DP" android:text= "Price: $" android:paddingleft= "20DP" Android:textsize= "12SP"/> <textview android:id= "@+id/price" android:layout_width= "Wrap_content" android:layout_height= "50DP" android:paddingright= "10DP" android:text= "Android:layout_mar" ginleft= "20DP" android:textsize= "18SP"/></linearlayout>
3.food.java: (Bean Class)
Package Com.example.info;public class Food {public int food_img;public string Food_name;public string Food_price;public S Tring Text;public int getfood_img () {return food_img;} public void setfood_img (int food_img) {this.food_img = food_img;} Public String Getfood_name () {return food_name;} public void Setfood_name (String food_name) {this.food_name = Food_name;} Public String Getfood_price () {return food_price;} public void Setfood_price (String food_price) {this.food_price = Food_price;} Public food (int food_img, string food_name, String food_price) {super (); this.food_img = Food_img;this.food_name = Food_na Me;this.food_price = Food_price;} Public food () {super ();} @Overridepublic String toString () {return super.tostring ();}}
4.mylistviewadapter.java:
Package Com.example.adapter;import Java.util.arraylist;import Java.util.hashmap;import Com.example.info.Food; Import Com.example.listviewselectitem.r;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.imageview;import Android.widget.textview;public class Mylistviewadapter extends BaseAdapter {// The Listprivate arraylist<food> foodlist;//that populates the data is used to control the check state of the checkbox private static Hashmap<integer, boolean> isselected;//Contexts Private context context;//is used to import layouts private Layoutinflater Inflater = null;//constructor Public Mylistviewadapter ( Arraylist<food> list, Context context) {This.context = Context;this.foodlist = List;inflater = Layoutinflater.from (context); isSelected = new Hashmap<integer, boolean> ();//Initialize Data initdate ();} Initializes the isselected data private void Initdate () {for (int i = 0; i < foodlist.size (); i++) {getisselected (). put (i, false);}} @Overridepublic int GetCount () {return foodlist.size ();} @Overridepublic Object getItem (int position) {return foodlist.get (position);} @Overridepublic long Getitemid (int position) {return position;} @Overridepublic view GetView (int position, view Convertview, ViewGroup parent) {Viewholder holder = null;if (Convertview = = null) {//Get Viewholder Object holder = new Viewholder ();//import layout and assign value to Convertviewconvertview = Inflater.inflate (R.layout.item, NULL); Holder.imageview = (ImageView) Convertview.findviewbyid (r.id.food_imager); holder.txt1 = (TextView) Convertview.findviewbyid (r.id.food_name); holder.txt2 = (TextView) Convertview.findviewbyid (r.id.price); HOLDER.CB = (CheckBox) Convertview.findviewbyid (R.id.check_box);//Set label for View Convertview.settag (holder);} else {//Remove Holderholder = (viewholder) Convertview.gettag ();} Get data food food = foodlist.get (position);//populate the data into the corresponding control of the current Convertview Holder.imageView.setImageResource (food.food_ IMG); Holder.txt1.setText (food.food_name); Holder.txt2.setText (foOd.food_price)///Set the display of TextView in list//Set the checkbox's check status according to IsSelected holder.cb.setChecked (getisselected (). Get ( position)); return Convertview;} public static Hashmap<integer, boolean> getisselected () {return isSelected;} public static void Setisselected (Hashmap<integer, boolean> isSelected) {mylistviewadapter.isselected = isSelected;} public static class Viewholder {public TextView txt1;public TextView txt2;public ImageView imageview;public CheckBox CB;} }
5.mainactivity.java:
Package Com.example.listviewselectitem;import Java.util.arraylist;import Java.util.hashmap;import Com.example.adapter.mylistviewadapter;import Com.example.adapter.mylistviewadapter.viewholder;import Com.example.info.food;import Android.os.bundle;import Android.app.activity;import Android.content.Context;import Android.view.layoutinflater;import Android.view.view;import Android.view.window;import Android.view.view.onclicklistener;import Android.widget.adapterview;import Android.widget.button;import Android.widget.checkbox;import Android.widget.listview;import Android.widget.toast;import Android.widget.adapterview.onitemclicklistener;public class Mainactivity extends Activity implements Onclicklistener , Onitemclicklistener {private ListView listview;private Button ok;private arraylist<food> foods = new ArrayList <Food> ();p rivate mylistviewadapter adapter;private CheckBox checkbox;protected void OnCreate (Bundle Savedinstancestate) {super.oncreate (savedinstancestate); RequestwindoWfeature (Window.feature_no_title); Setcontentview (R.layout.activity_main); Initview ();//Initialize control view view= Layoutinflater.from (This). Inflate (R.layout.item, null); checkbox= (CheckBox) View.findviewbyid (R.id.check_box); InitData ();//Initialize virtual data adapter = new Mylistviewadapter (foods, Getapplicationcontext ()); Listview.setadapter (adapter);} /** * Initialize control * */public void Initview () {listview = (ListView) Findviewbyid (r.id.drink_list);//ListView List Control OK = (Button) F Indviewbyid (r.id.btn_commit);//OK button Ok.setonclicklistener (this), Listview.setonitemclicklistener (this);} /** * Initialize virtual data * */public void InitData () {Class CLS = r.drawable.class;//reflection try {foods.add ("New Food" (Cls.getdeclaredfield ("D 1 "). GETINT (null)," Kiwi Juice "," ten "), Foods.add (new Food (Cls.getdeclaredfield (" D2 "). GetInt (null)," Orange Juice "," n "); Foods.add (New food ("Cls.getdeclaredfield") getInt (null), "Beer", "D3"), Foods.add (new Food (Cls.getdeclaredfield ("D4"). GetInt (null), "Grape Juice", "ten"), Foods.add (new Food (Cls.getdeclaredfield ("D5") getInt (null), "Pure wheat Milk Tea", "8");Add (new Food (Cls.getdeclaredfield ("D6"). GetInt (null), "Mint Juice", "ten"), Foods.add (new Food (Cls.getdeclaredfield ("D7"). GetInt (null), "Lemon Mint", "n"), Foods.add (new Food (Cls.getdeclaredfield ("D8") getInt (null), "Coconut Juice", "ten"); Foods.add ( New Food (Cls.getdeclaredfield ("D9"). GetInt (null), "Pearl milk Tea", "9")), Foods.add (new Food (Cls.getdeclaredfield ("D10"). GetInt (NULL), "Pomegranate Juice", "10")); catch (Exception e) {e.printstacktrace ();}} /** * * * button's Click event handling * */@Overridepublic void OnClick (View v) {int mID = V.getid (); switch (MID) {case R.id.btn_commit:myprice () ;//Calculate Total price and output break;}} /** * Method of calculating Total price * */public void Myprice () {hashmap<integer, boolean> map = mylistviewadapter.getisselected (); String str = ""; int money = 0;for (int i = 0; I < map.size (); i++) {if (Map.get (i)) {str + = (i + "); Money + = Integer.parseint (Foods.get (i). food_price);}} Mylistviewadapter.getisselected (). Get (""); Toast.maketext (Getapplicationcontext (), "+ str +" is selected, the total Price is: "+ Money, Toast.length_short). Show ();} /** * How to select the item of the listview * */@Overridepublic void Onitemclick (adapterview<?> parent, view view, int Position,long ID) {//Get Viewholder object, This eliminates the steps to instantiate the CB instance we need through layers of Findviewbyid viewholder holder = (viewholder) view.gettag ();// Change the status of the CheckBox Holder.cb.toggle ();//Record the checkbox's selection Status mylistviewadapter.getisselected (). put (position, Holder.cb.isChecked ());}}
Second, the running example
favorite Friends Follow me and my public number (left column)! ThanksSource Download
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Android Combat Simple Tutorial-the 47th Gun (ListView multiple selection-to achieve a point meal system)