java - Update City Spinner with notifyDataSetChanged after state is selected -
how update city spinner once user selects state?
both fields populated using datacall.class returns json data , parses info array spinner.
my code below sets city adapter defualt "select state" value , once user gets selects state should use notifydatasetchanged since default array city spinner updated new city names. errors getting commented in code below.
public class searchactivity extends activity{ private static final string tag = "myapp"; arrayadapter<string> adapter2; string city_values[] = new string[]{"please select state."}; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.search_layout); final spinner zipspinner = (spinner) findviewbyid(r.id.zipspinner); final spinner cityspinner = (spinner) findviewbyid(r.id.cityspinner); adapter2 = new arrayadapter<string> (this,android.r.layout.simple_spinner_item, city_values); adapter2.setdropdownviewresource(r.layout.city_spinner_layout); cityspinner.setadapter(adapter2); jsonarray jsonarray; try { string spinnercontenttype = "state"; string spinnerurl = "getstorestate.php"; string spinner_data = datacall.getjson(spinnerurl,spinnercontenttype); log.d(tag, spinner_data); jsonarray = new jsonarray(spinner_data); final string[] array_spinner = new string[jsonarray.length()]; (int i=0; i<jsonarray.length(); i++) { string stylevalue = jsonarray.getjsonarray(i).getstring(0); log.d(tag, stylevalue); array_spinner[i] = stylevalue; } arrayadapter<string> adapter = new arrayadapter<string> (this, android.r.layout.simple_spinner_item,array_spinner); adapter.setdropdownviewresource(r.layout.state_spinner_layout); zipspinner.setadapter(adapter); zipspinner.setonitemselectedlistener(new onitemselectedlistener() { public void onitemselected(adapterview<?> parent,view view, int pos, long id) { int item = zipspinner.getselecteditemposition(); if(item != 0){ string item_value = array_spinner[item]; string spinnercontenttype = "city"; string spinnerurl = "getstorecity.php?state=" + item_value; log.d(tag, spinnerurl); string city_data = datacall.getjson(spinnerurl,spinnercontenttype); log.d(tag, city_data); jsonarray cityarray = null; try { cityarray = new jsonarray(city_data); } catch (jsonexception e) { e.printstacktrace(); } final string[] city_spinner = new string[cityarray.length()]; (int i=0; i<cityarray.length(); i++){ string stylevalue = null; try { stylevalue = cityarray.getjsonarray(i).getstring(0); log.d(tag, stylevalue); } catch (jsonexception e) { e.printstacktrace(); } city_spinner[i] = stylevalue; } city_values = city_spinner; adapter2.notifydatasetchanged(); string test_string = "notify update"; log.d(tag, test_string); } else { // finish(); } } public void onnothingselected(adapterview parent) { // nothing. } }); cityspinner.setonitemselectedlistener(new onitemselectedlistener() { public void onitemselected(adapterview<?> parent,view view, int pos, long id) { int item = zipspinner.getselecteditemposition(); if(item != 0){ }else{ } } public void onnothingselected(adapterview parent) { // nothing. } }); }catch (jsonexception e) { e.printstacktrace(); } } }
public class searchactivity extends activity { arrayadapter<string> adapter2; string city_values[]; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.search_layout); final spinner zipspinner = (spinner) findviewbyid(r.id.zipspinner); final spinner cityspinner = (spinner) findviewbyid(r.id.cityspinner); string city_values[] = new string[]{"please select state."}; adapter2 = new arrayadapter<string>(this, android.r.layout.simple_spinner_item, city_values); adapter2.setdropdownviewresource(r.layout.city_spinner_layout); cityspinner.setadapter(adapter2); jsonarray jsonarray; final jsonarray cityarray; try { string spinnercontenttype = "state"; string spinnerurl = "getstorestate.php"; string spinner_data = datacall.getjson(spinnerurl, spinnercontenttype); jsonarray = new jsonarray(spinner_data); final string[] array_spinner = new string[jsonarray.length()]; (int = 0; < jsonarray.length(); i++) { string stylevalue = jsonarray.getjsonarray(i).getstring(0); array_spinner[i] = stylevalue; } arrayadapter<string> adapter = new arrayadapter<string>(this, android.r.layout.simple_spinner_item, array_spinner); adapter.setdropdownviewresource(r.layout.state_spinner_layout); zipspinner.setadapter(adapter); zipspinner.setonitemselectedlistener(new adapterview.onitemselectedlistener() { public void onitemselected(adapterview<?> parent, view view, int pos, long id) { int item = zipspinner.getselecteditemposition(); string item_value = array_spinner[item]; string spinnercontenttype = "city"; string spinnerurl = "getstorecity.php?state=" + item_value; string city_data = datacall.getjson(spinnerurl, spinnercontenttype); cityarray = new jsonarray(city_data); //the final local variable cityarray cannot assigned, since defined in enclosing type final string[] city_spinner = new string[cityarray.length()]; (int = 0; < cityarray.length(); i++) { string stylevalue = cityarray.getjsonarray(i).getstring(0); //unhandled exception type jsonexception city_spinner[i] = stylevalue; } city_values = city_spinner; //unhandled exception type jsonexception adapter2.notifydatasetchanged(); } public void onnothingselected(adapterview parent { // nothing. } }); } catch (jsonexception e) { e.printstacktrace(); } } } now try
Comments
Post a Comment