java - Keeping Only One radio Button Checked In an TableRow Inflater? -
i have been trying keep 1 of radio buttons checked every time user able select multiple radio buttons.
how can keep single or current selected radio button checked?
i have tablelayout
has tablerow
xml layout being inflatd code. also, onclicklistener
applied on radiobutton fetches tag
current selected radio button.
can please me out this?
for ref. table row's xml layout:
<tablerow xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tbldynstorerow" android:layout_margin="0.0dp" android:layout_width="match_parent" > <textview android:id="@+id/tvstorecount" android:textsize="10sp" android:layout_width="wrap_content" android:layout_height="12dp" android:singleline="true" android:scrollhorizontally="true" /> <radiobutton android:id="@+id/rb1storename" android:textsize="10sp" android:layout_width="wrap_content" android:layout_height="31dp" android:singleline="true" android:scrollhorizontally="true" /> </tablerow>
oncreate() method:
protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_store_selection); tablelayout tl = (tablelayout) findviewbyid(r.id.mainstoretable); //radiobutton rb1; textview tvdate = (textview) findviewbyid(r.id.textview1_date2); intent getstorei = getintent(); // usrgpslock = i.getstringextra("currusrlat") + "," + // i.getstringextra("currusrlon"); uuid = getstorei.getstringextra("imei").trim(); userdate = getstorei.getstringextra("userdate"); tvdate.settext(userdate); /*telephonymanager tmanager = (telephonymanager) getsystemservice(context.telephony_service); uuid = tmanager.getdeviceid();*/ button btnstart = (button)findviewbyid(r.id.startques); dbengine.open(); storelist = dbengine.fetchstorelist(); dbengine.close(); /*final string[] storecode = new string[storelist.length]; final string[] storename = new string[storelist.length];*/ storecode = new string[storelist.length]; storename = new string[storelist.length]; (int splitval = 0; splitval <= (storelist.length - 1); splitval++) { stringtokenizer tokens = new stringtokenizer(string.valueof(storelist[splitval]), "_"); storecode[splitval] = tokens.nexttoken().trim(); storename[splitval] = tokens.nexttoken().trim(); } system.out.println(storelist); // tablelayout /*tablelayout tl = (tablelayout) findviewbyid(r.id.maintable);*/ layoutinflater inflater = getlayoutinflater(); // go through each item in array (int current = 0; current <= (storelist.length - 1); current++) { tablerow storerow = (tablerow)inflater.inflate(r.layout.store_table_row, tl, false); textview tv1 = (textview)storerow.findviewbyid(r.id.tvstorecount); final radiobutton rb1 = (radiobutton)storerow.findviewbyid(r.id.rb1storename); //tv1.settag(current); tv1.settext((""+(current+1)).trim()); //tv1.setid(); rb1.settag(storecode[current]); rb1.settext(storename[current]); tl.addview(storerow); /*// create tablerow , give id tr = new tablerow(this); tr.setid(200 + current); tr.settag(storecode[current]); tr.setlayoutparams(new layoutparams(layoutparams.wrap_content, layoutparams.wrap_content)); tr.setclickable(true); rb1 = new radiobutton(this); rb1.setid(current); rb1.settag(storecode[current]); rb1.settext(storename[current]); rb1.settextcolor(color.black); rb1.setlayoutparams(new layoutparams(layoutparams.wrap_content, layoutparams.wrap_content)); tr.addview(rb1); checkbox cb1 = new checkbox(this); cb1.setid(500 + current); // cb1.settext(provinces[current]); cb1.settextcolor(color.black); cb1.setlayoutparams(new layoutparams(layoutparams.wrap_content, layoutparams.wrap_content)); tr.addview(cb1); * checkbox cb2 = new checkbox(this); cb2.setid(300+current); * //cb1.settext(provinces[current]); cb2.settextcolor(color.black); * cb2.setlayoutparams(new layoutparams( layoutparams.wrap_content, * layoutparams.wrap_content)); tr.addview(cb2); // add tablerow tablelayout tl.addview(tr, new tablelayout.layoutparams(layoutparams.wrap_content, layoutparams.wrap_content));*/ rb1.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { // todo auto-generated method stub system.out.println("inside-onclick"); //system.out.println(arg0.getid()); system.out.println(arg0.gettag()); selstoreid = arg0.gettag().tostring(); if(prevsel == 0) { prevselstoreid = selstoreid; previd = arg0.getid(); prevsel = 1; } else{ } /*rb1.refreshdrawablestate();*/ if(prevselstoreid.equals(arg0.gettag().tostring())){ /*int rbid; rbid = rb1.getid(); system.out.println("rb id: " + rbid);*/ } else{ int rbid; rbid = arg0.getid(); //rb1.refreshdrawablestate(); //rb1.clearfocus(); //rb1.findviewbyid(rbid).isselected(); rb1.findviewbyid(previd).clearfocus(); rb1.findviewbyid(previd).invalidate(); rb1.findviewbyid(previd).refreshdrawablestate(); system.out.println("previd: " + previd); system.out.println("rbid: " + rbid); rb1.setchecked(false); //rb1.findviewwithtag(prevselstoreid).invalidate(); prevsel = 0; prevselstoreid = selstoreid; previd = rbid; rb1.findviewbyid(rbid).isselected(); } } }); } btnstart.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { intent nxtp3 = new intent(storeselection.this, lastvisitdetails.class); nxtp3.putextra("storeid", selstoreid); nxtp3.putextra("imei", uuid); nxtp3.putextra("date", userdate); startactivity(nxtp3); } }); }
to prevent multiple checking of radiobutton must within same radiogroup.
either define radiogroup in xml (but see trying difficult)
or create in java: radiogroup rg = new radiogroup(this);
edit edit edit
try this...hope works
radiogroup rg = new radiogroup(this); radiobutton[] rb = new radiobutton[storelist.length]; (int current = 0; current <= (storelist.length - 1); current++) { tablerow storerow = (tablerow)inflater.inflate(r.layout.store_table_row, tl, false); textview tv1 = (textview)storerow.findviewbyid(r.id.tvstorecount); rb[current] = (radiobutton)storerow.findviewbyid(r.id.rb1storename); rg.addview(rb[current]); /*other suff...
Comments
Post a Comment