listview with checkbox android -
to app need list checkboxex, clicking on text causes new intent clicking on checkbox causes saving of checkbox's value. not sure if problem clear here example:
i got list ( '_' checkboxes):
- _ valuea
- _ valueb
- _ valuec
let's click on checkbox's placed next , c:
- x valuea
- _ valueb
- x valuec
let's click on 'valuea' textview. new intent should start , vector [valuea, valuec] should saved , send next intent.
for tests create list each item linearview textview , checkbox. created 2 methods: onclick_textview , onclick_checkbox. in methods , in 'onlistitemclick' show toasts test 1 executed. 1 works in onclick_checkbox. not know start task. show me hints? useful methods, proper docs sites, algorithm's draft maybe?
please refer below code:
states.java
public class states { string code = null; string name = null; boolean selected = false; public states(string code, string name, boolean selected) { super(); this.code = code; this.name = name; this.selected = selected; } public string getcode() { return code; } public void setcode(string code) { this.code = code; } public string getname() { return name; } public void setname(string name) { this.name = name; } public boolean isselected() { return selected; } public void setselected(boolean selected) { this.selected = selected; } } mainactivity.java file
public class mainactivity extends activity { mycustomadapter dataadapter = null; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // generate list view arraylist displaylistview(); checkbuttonclick(); } private void displaylistview() { // array list of countries arraylist<states> statelist = new arraylist<states>(); states _states = new states("91", "india", false); statelist.add(_states); _states = new states("61", "australia", true); statelist.add(_states); _states = new states("55", "brazil", false); statelist.add(_states); _states = new states("86", "china", true); statelist.add(_states); _states = new states("49", "germany", true); statelist.add(_states); _states = new states("36", "hungary", false); statelist.add(_states); _states = new states("39", "italy", false); statelist.add(_states); _states = new states("1", "us", false); statelist.add(_states); _states = new states("44", "uk", false); statelist.add(_states); // create arrayadaptar string array dataadapter = new mycustomadapter(this, r.layout.state_info, statelist); listview listview = (listview) findviewbyid(r.id.listview1); // assign adapter listview listview.setadapter(dataadapter); listview.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview<?> parent, view view, int position, long id) { // when clicked, show toast textview text states state = (states) parent.getitematposition(position); toast.maketext(getapplicationcontext(), "clicked on : " + state.getname(), toast.length_long) .show(); } }); } private class mycustomadapter extends arrayadapter<states> { private arraylist<states> statelist; public mycustomadapter(context context, int textviewresourceid, arraylist<states> statelist) { super(context, textviewresourceid, statelist); this.statelist = new arraylist<states>(); this.statelist.addall(statelist); } private class viewholder { textview code; checkbox name; } @override public view getview(int position, view convertview, viewgroup parent) { viewholder holder = null; log.v("convertview", string.valueof(position)); if (convertview == null) { layoutinflater vi = (layoutinflater) getsystemservice(context.layout_inflater_service); convertview = vi.inflate(r.layout.state_info, null); holder = new viewholder(); holder.code = (textview) convertview.findviewbyid(r.id.code); holder.name = (checkbox) convertview .findviewbyid(r.id.checkbox1); convertview.settag(holder); holder.name.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { checkbox cb = (checkbox) v; states _state = (states) cb.gettag(); toast.maketext( getapplicationcontext(), "checkbox: " + cb.gettext() + " -> " + cb.ischecked(), toast.length_long) .show(); _state.setselected(cb.ischecked()); } }); } else { holder = (viewholder) convertview.gettag(); } states state = statelist.get(position); holder.code.settext(" (" + state.getcode() + ")"); holder.name.settext(state.getname()); holder.name.setchecked(state.isselected()); holder.name.settag(state); return convertview; } } private void checkbuttonclick() { button mybutton = (button) findviewbyid(r.id.findselected); mybutton.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { stringbuffer responsetext = new stringbuffer(); responsetext.append("selected countries are...\n"); arraylist<states> statelist = dataadapter.statelist; (int = 0; < statelist.size(); i++) { states state = statelist.get(i); if (state.isselected()) { responsetext.append("\n" + state.getname()); } } toast.maketext(getapplicationcontext(), responsetext, toast.length_long).show(); } }); } } activity_main.xml file
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffeeeeee" android:gravity="center" android:orientation="vertical" > <textview android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp" android:text="country codes" android:textsize="20sp" /> <button android:id="@+id/findselected" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="get selected items" /> <listview android:id="@+id/listview1" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </linearlayout> state_info.xml file
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="6dip" > <checkbox android:id="@+id/checkbox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:focusable="false" android:focusableintouchmode="false" android:text="checkbox" android:textcolor="#b40404" /> <textview android:id="@+id/code" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@id/checkbox1" android:layout_alignbottom="@id/checkbox1" android:layout_torightof="@id/checkbox1" android:text="textview" android:textcolor="#ff000000" /> </relativelayout> you can refer link http://developerandro.blogspot.com/2013/09/listview-with-checkbox-android-example.html
Comments
Post a Comment