web services - populating spinner based on the previous spinner selection in android -


am not familiar android development,and came across situation cascade dropdown based on first spinner selection.i.e.,consider example in 1st spinner states data loaded web service using db helper class while selecting state name in 1st spinner need populate 2nd spinner based on 1st spinner selected item's id(stateid not spinner's selected item id) db means need select stateid selected state , want filter districts based on states. state table creation: create table states( stateid integer , statename varchar) district table creation: create table branches(_id integer primay key,districtname varchar,stateid integer)

in have used load data states using arraylist , on spinner1.setonitemselectedlistener function loaded district values values loading per position of items in states spinner instead of need filter based on stateid in branch table.

this code getting states:

public arraylist<hashmap<string, string>> getstatesdata() {     arraylist alist = new arraylist();     try {         log.e("getstatesdata", "started");         string selectquery = "select * states";         sqlitedatabase database = this.getwritabledatabase();         cursor cursor = database.rawquery(selectquery, null);         if (cursor.movetofirst()) {             {                 hashmap<string, string> map = new hashmap<string, string>();                 map.put("stateid",                         cursor.getstring(cursor.getcolumnindex("stateid")));                 map.put("statename", cursor.getstring(cursor                         .getcolumnindex("statename")));                 alist.add(map);              } while (cursor.movetonext());         }         cursor.close();         return alist;      } catch (exception e) {         e.printstacktrace();         log.e("getstatesdata", "ended");         return alist;     } } 

spinner1.setonitemselectedlistner event:

spinner1.setonitemselectedlistener(new onitemselectedlistener() {          @override         public void onitemselected(adapterview<?> adapt, view v,                 int pos, long id) {             // todo auto-generated method stub              long spinstate=spinner_state.getselecteditemid();     branch_values=sdbcontroller.getstateselectiddata(spinstate);     branch_name_ary.clear();     (int = 0; < branch_values.size(); i++) {         string name=branch_values.get(i).get("districtname");         string id=branch_values.get(i).get("stateid");         branch_name_ary.add(name);         log.e("branchesbystates", branch_name_ary.tostring());     }     arrayadapter<string> spinnerarrayadapter1 = new arrayadapter<string>(this, android.r.layout.simple_spinner_item, branch_name_ary);     spinnerarrayadapter1.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);     spinner_district.setadapter(spinnerarrayadapter1);         }          @override         public void onnothingselected(adapterview<?> arg0) {             // todo auto-generated method stub          }     }); 

please suggest solution districts based on stateid may idea solve issue.

thanks in advance.

if you, create state so

public class state { private string id; private string name;  public state(string id, string name) {     this.id = id;     this.name = name; }  public string getid() {     return id; }  public void setid(string id) {     this.id = id; }  public string getname() {     return name; }  public void setname(string name) {     this.name = name; }  @override public string tostring() {     return name; } 

}

and getstatesdate method this:

public list<state> getstatesdata() {     list<state> states = new linkedlist<state>();     try {         log.e("getstatesdata", "started");         string selectquery = "select * states";         sqlitedatabase database = this.getwritabledatabase();         cursor cursor = database.rawquery(selectquery, null);         if (cursor.movetofirst()) {             {                 hashmap<string, string> map = new hashmap<string, string>();                 string stateid = cursor.getstring(cursor.getcolumnindex("stateid"));                 string statename = cursor.getstring(cursor.getcolumnindex("statename"));                 states.add(new state(stateid, statename));              } while (cursor.movetonext());         }         cursor.close();     } catch (exception e) {         e.printstacktrace();         log.e("getstatesdata", "ended");     }      return states; } 

and spinner1 onclicklistener this:

spinner1.setonitemclicklistener(new adapterview.onitemclicklistener() {         @override         public void onitemclick(adapterview<?> adapterview, view view, int i, long l) {             state state = (state) spinner1.getselecteditem();              string stateid = state.getid();             string statename = state.getname();              //you assured id matches name selected , can proceed there         }     }); 

i hope helps. cheers


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -