main.xml configuration file<?xml version="1.0"encoding="Utf-8"? ><linearlayout xmlns:android="http://schemas.android.com/apk/res/android"Android:layout_width="fill_parent"Android:layout_height="fill_parent"android:orientation="Vertical"> <TextView android:layout_width="fill_parent"Android:layout_height="wrap_content"Android:text="@string/hello"/> <listview android:id="@+id/lv_single_list"android:descendantfocusability="blocksdescendants"android:fastscrollenabled="true"android:clickable="true"Android:divider="@drawable/divider_horizontal_timeline"Android:dividerheight="1.0dip"Android:layout_width="fill_parent"Android:layout_height="400DP"Android:scrollingcache="false"Android:fadingedge="None"Android:cachecolorhint="#00000000"/></linearlayout>
configuration file for Adapter adapter List_adapter.xml<?xml version="1.0"encoding="Utf-8"? ><linearlayout xmlns:android="http://schemas.android.com/apk/res/android"Android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="Center"android:orientation="Horizontal"> <textview android:id="@+id/tv_zxing_section_sequence"Android:layout_width="50DP"android:layout_height="wrap_content"android:textsize="16sp"/> <textview android:id="@+id/tv_zxing_sectionname"Android:layout_width="210DP"android:layout_height="wrap_content"android:textsize="14SP"android:layout_marginleft="10DP"/> <checkbox android:id="@+id/item_cb_section"Android:layout_width="wrap_content"Android:layout_height="wrap_content"android:focusable="false"Android:focusableintouchmode="false"android:clickable="false"Android:layout_alignparenttop="true"android:layout_marginleft="5DP"/></linearlayout>
singlelistchoiceactivity.javapackage com.amker.test;import Java.util.arraylist;import java.util.HashMap; Import Java.util.list;import java.util.map;import Android.app.activity;import Android.content.context;import Android.os.bundle;import Android.util.log;import Android.view.layoutinflater;import Android.view.View;import Android.view.viewgroup;import Android.view.view.onclicklistener;import Android.widget.adapterview;import Android.widget.baseadapter;import Android.widget.checkbox;import Android.widget.listview;import Android.widget.TextView; Public classSinglelistchoiceactivity extends Activity {PrivateListView ListView; PrivateMap<integer, boolean>isSelected; PrivateList Beselecteddata =NewArrayList (); ListAdapter adapter; PrivateList cs =NULL; @Override Public voidonCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate); Setcontentview (R.layout.main); ListView= (ListView) This. Findviewbyid (r.id.lv_single_list); CS=NewArrayList (); Cs.add ("aaaaaa"); Cs.add ("bbbbbb"); Cs.add ("CCCCCC"); Cs.add ("dddddd"); Cs.add ("eeeeee"); Cs.add ("FFFFFF"); Cs.add ("GGGGGG"); Cs.add ("hhhhhh"); Cs.add ("JJJJJJ"); Initlist (); } voidinitlist () {if(cs = =NULL|| Cs.size () = =0) return; if(isSelected! =NULL) isSelected=NULL; IsSelected=NewHashmap<integer, boolean>(); for(inti =0; I < cs.size (); i++) {isselected.put (I,false); } //clear items that have already been selected if(Beselecteddata.size () >0) {beselecteddata.clear (); } Adapter=NewListAdapter ( This, CS); Listview.setadapter (adapter); Listview.setchoicemode (Listview.choice_mode_single); Adapter.notifydatasetchanged (); Listview.setonitemclicklistener (NewAdapterview.onitemclicklistener () { Public voidOnitemclick (adapterview<?>Parent, view view,intPositionLongID) {LOG.I ("Map"Cs.Get(position). ToString ()); } }); } classListAdapter extends Baseadapter {Privatecontext Context; PrivateList CS; PrivateLayoutinflater Inflater; PublicListAdapter (context context, List data) { This. Context =context; This. cs =data; Initlayoutinflater (); } voidInitlayoutinflater () {Inflater= Layoutinflater. from(context); } Public intGetCount () {returncs.size (); } PublicObject GetItem (intposition) { returnCs.Get(position); } Public LongGetitemid (intposition) { return 0; } PublicView GetView (intPosition1, View Convertview, ViewGroup parent) {Viewholder Holder=NULL; View View=NULL; FinalintPosition =Position1; if(Convertview = =NULL) {Convertview=inflater.inflate (R.layout.list_adapter,NULL); Holder=NewViewholder (); Holder.checkbox=(CheckBox) convertview. Findviewbyid (r.id.item_cb_section); Holder.tv_sequence=(TextView) convertview. Findviewbyid (r.id.tv_zxing_section_sequence); Holder.tv_sectionname=(TextView) convertview. Findviewbyid (R.id.tv_zxing_sectionname); Convertview.settag (holder); } Else{View=Convertview; Holder=(Viewholder) View.gettag (); } holder.checkBox.setOnClickListener (NewOnclicklistener () { Public voidOnClick (View v) {//Current click of CBBoolean cu =!isselected.Get(position); //set all to False first for(Integer p:isselected.keyset ()) {Isselected.put (P,false); } //then the actual state of the current selection CBisselected.put (position, CU); ListAdapter. This. notifydatasetchanged (); Beselecteddata.clear (); if(CU) Beselecteddata.add (cs.Get(position)); } }); Holder.tv_sequence.setText (string.valueof (Position+1)); Holder.tv_sectionname.setText (cs.Get(position). ToString ()); Holder.checkBox.setChecked (isSelected.Get(position)); returnConvertview; } } classviewholder {checkbox checkbox; TextView tv_sequence; TextView Tv_sectionname; }}
Combination of ListView and checkbox for single selection