sqlite - Set Spinner value based on database record in android -
sqlite - Set Spinner value based on database record in android -
i pulling info database , populating series of edittexts , spinners data.
i can fill edittexts without issue spinners resetting default values.
i have tried using setselection()
doesn't work.
here code:
spinner = (spinner) rootview.findviewbyid(r.id.vehicle); arrayadapter<string> adapter = new arrayadapter<string>(getactivity(), android.r.layout.simple_spinner_item, new string[] {"car", "bus", "plane", "bicycle"}); adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item); spinner.setadapter(adapter); spinner.getonitemselectedlistener(); spinner = (spinner) rootview.findviewbyid(r.id.category); arrayadapter<string> adaptercategory = new arrayadapter<string>(getactivity(), android.r.layout.simple_spinner_item, new string[] {"vacation", "commute", "leisure", "shopping"}); adaptercategory.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item); spinner.setadapter(adaptercategory); spinner.getonitemselectedlistener(); } public void updatetripview(string position) { cursor cursor = ((triplistactivity)getactivity()).dbhelper.fetchtripbyid(position); if (cursor != null) { seek { string tripid = cursor.getstring(cursor.getcolumnindexorthrow("tripid")); int tripcategory = cursor.getint(cursor.getcolumnindexorthrow("category")); int tripvehicle = cursor.getint(cursor.getcolumnindexorthrow("vehicle")); string tripdistance = cursor.getstring(cursor.getcolumnindexorthrow("distance")); string tripdate = cursor.getstring(cursor.getcolumnindexorthrow("date")); string tripnote = cursor.getstring(cursor.getcolumnindexorthrow("note")); ((textview) rootview.findviewbyid(r.id.tripid)).settext(tripid); ((spinner) rootview.findviewbyid(r.id.category)).setselection(tripcategory); ((spinner) rootview.findviewbyid(r.id.vehicle)).setselection(tripvehicle); ((textview) rootview.findviewbyid(r.id.distance)).settext(tripdistance); ((textview) rootview.findviewbyid(r.id.date)).settext(tripdate); ((textview) rootview.findviewbyid(r.id.note)).settext(tripnote); } grab (illegalargumentexception e) { log.d(tag, "illegalargumentexception"); } } mcurrentposition = position; }
edit: found solution based on answers here: how set selected item of spinner value, not position?
//get index value of spinner private int getindex(spinner spinner, string mystring) { int index = 0; (int i=0;i<spinner.getcount();i++){ if (spinner.getitematposition(i).tostring().equalsignorecase(mystring)){ index = i; break; } } homecoming index; }
and amended updatetrip
class:
public void updatetripview(string position) { cursor cursor = ((triplistactivity)getactivity()).dbhelper.fetchtripbyid(position); if (cursor != null) { seek { string tripid = cursor.getstring(cursor.getcolumnindexorthrow("tripid")); string tripcategory = cursor.getstring(cursor.getcolumnindexorthrow("category")); string tripvehicle = cursor.getstring(cursor.getcolumnindexorthrow("vehicle")); string tripdistance = cursor.getstring(cursor.getcolumnindexorthrow("distance")); string tripdate = cursor.getstring(cursor.getcolumnindexorthrow("date")); string tripnote = cursor.getstring(cursor.getcolumnindexorthrow("note")); spinner = ((spinner) rootview.findviewbyid(r.id.category)); arrayadapter<string> adaptercategory = new arrayadapter<string>(getactivity(), android.r.layout.simple_spinner_item, new string[] {"vacation", "commute", "leisure", "shopping"}); spinner.setadapter(adaptercategory); ((textview) rootview.findviewbyid(r.id.tripid)).settext(tripid); //set spinner value based on index spinner.setselection(getindex(spinner, tripcategory)); spinner1 = ((spinner) rootview.findviewbyid(r.id.vehicle)); arrayadapter<string> adapter = new arrayadapter<string>(getactivity(), android.r.layout.simple_spinner_item, new string[] {"car", "bus", "plane", "bicycle"}); adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item); spinner1.setadapter(adapter); //set spinner value based on index spinner1.setselection(getindex(spinner1, tripvehicle)); ((textview) rootview.findviewbyid(r.id.distance)).settext(tripdistance); ((textview) rootview.findviewbyid(r.id.date)).settext(tripdate); ((textview) rootview.findviewbyid(r.id.note)).settext(tripnote); } grab (illegalargumentexception e) { log.d(tag, "illegalargumentexception"); } } mcurrentposition = position; }
android sqlite android-spinner
Comments
Post a Comment