android - Spinner object doesn't take second input once a process is being executed -
i working on finance app populating exchange currecny value using yahoo finance api , here implementation
void currency_widget() { from.setadapter(new currencylistadapter(getactivity(), r.layout.country_list_item, recourselist)); from.setonitemselectedlistener(new adapterview.onitemselectedlistener() { @override public void onitemselected(adapterview<?> adapterview, view view, int i, long l) { string m = (string) array.get(recourselist, i); string[] ma = m.split(","); locale locale = new locale("en_us", ma[1]); c2 = currency.getinstance(locale); } @override public void onnothingselected(adapterview<?> adapterview) { } }); to.setadapter(new currencylistadapter(getactivity(), r.layout.country_list_item, recourselist)); to.setonitemselectedlistener(new adapterview.onitemselectedlistener() { @override public void onitemselected(adapterview<?> adapterview, view view, int i, long l) { string m = (string) array.get(recourselist, i); string[] ma = m.split(","); locale locale = new locale("en_us", ma[1]); c1 = currency.getinstance(locale); } @override public void onnothingselected(adapterview<?> adapterview) { } }); } public class connection extends asynctask { @override protected object doinbackground(object... arg0) { connect(); return null; } private void connect() { try { string = c2 + "" + c1 + "=" + "x"; // fxquote ab=yahoofinance.getfx(fxsymbols.) fxquote usdeur = null; try { usdeur = yahoofinance.getfx(as); edittxt.settext("" + usdeur); } catch (exception e) { e.printstacktrace(); edittxt.settext("no internet connection"); } } catch (exception e) { e.printstacktrace(); } } } in have 2 spinner object allows user select desired currency from first spinner object , to second spinner object.
this far works fine expected. the problem arises when click button , execute operation
get.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { new connection().execute(); //todo spinner won't take second time input } }); it display value too, if try change spinner items second time not reflect i.e lets clicked on spinner , drop down menu appeared , changed value won't show item selection process done , dropdown button closed hence spinner items fix first position
solved
changed code per answer received , worked
@override protected object doinbackground(object... arg0) { // connect(); string = c2 + "" + c1 + "=" + "x"; // fxquote usdeur = yahoofinance.getfx(as); return yahoofinance.getfx(as); } @override protected void onpostexecute(object o) { super.onpostexecute(o); try { edittxt.settext("" + o); } catch (exception e) { e.printstacktrace(); edittxt.settext("no internet connection"); } }
i didnt checked code saw calling
edittxt.settext("no internet connection"); on doinbackground() wrong.
you have settext on postexecute() runs on ui-thread.
return usdeur on doinbackground() , settext on postexecute()
Comments
Post a Comment