java - setOnItemSelectedListener not being called? -


i'm new android , working on first app. trying parse contents of google sheets spreadsheets, list of names spinner. i've done using arrayadapter arraylist can see options when expand spinner. problem i'm facing spinner doesn't show selected item when 1 selected. if try run code, you'll see if try click submit button, it'll tell null being selected, i've narrowed down problem selected name string not being selected.

here mainactivity class:

public class mainactivity extends appcompatactivity implements view.onclicklistener{  arraylist<string> names = new arraylist<string>();  spinner spbusinesstype; button btnsubmit;  arrayadapter<string> adapterbusinesstype;  string sbusinesstype;   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      spbusinesstype = (spinner) findviewbyid(r.id.spbussinesstype);      btnsubmit=(button)findviewbyid(r.id.submit);     btnsubmit.setonclicklistener(this);      new downloadwebpagetask(new asyncresult() {         @override         public void onresult(jsonobject object) {             processjson(object);         }     }).execute("https://spreadsheets.google.com/tq?key=1jku2vt_gmnuyyalct4m9xelldpglq3n4uhs9qfrzxoq");      adapterbusinesstype = new arrayadapter<string>(this, android.r.layout.simple_spinner_item, names);     adapterbusinesstype.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);     spbusinesstype.setadapter(adapterbusinesstype);      spbusinesstype.setonitemselectedlistener(new adapterview.onitemselectedlistener() {          @override         public void onitemselected(adapterview<?> adapter, view v,                                    int position, long id) {             // on selecting spinner item             sbusinesstype = adapter.getitematposition(position).tostring();             system.out.println(sbusinesstype);              // showing selected spinner item             toast.maketext(getapplicationcontext(),                     "bussiness type : " + sbusinesstype, toast.length_short).show();         }          @override         public void onnothingselected(adapterview<?> arg0) {             // todo auto-generated method stub          }     });  }  @override public void onclick(view v) {     toast.maketext(getapplicationcontext(), "you have selected " + sbusinesstype,toast.length_short).show(); }  private void processjson(jsonobject object) {      try {         jsonarray rows = object.getjsonarray("rows");          (int r = 0; r < rows.length(); ++r) {             jsonobject row = rows.getjsonobject(r);             jsonarray columns = row.getjsonarray("c");              string name = columns.getjsonobject(0).getstring("v");             names.add(name);         }      } catch (jsonexception e) {         e.printstacktrace();     } } 

the asyncresult interface i'm using obtain json object google sheets:

public interface asyncresult {     void onresult(jsonobject object); } 

the downloadwebpagetask class obtaining , parsing json object:

public class downloadwebpagetask extends asynctask<string, void, string> { asyncresult callback;  public downloadwebpagetask(asyncresult callback) {     this.callback = callback; }  @override protected string doinbackground(string... urls) {      // params comes execute() call: params[0] url.     try {         return downloadurl(urls[0]);     } catch (ioexception e) {         return "unable download requested page.";     } }  // onpostexecute displays results of asynctask. @override protected void onpostexecute(string result) {     // remove unnecessary parts response , construct json     int start = result.indexof("{", result.indexof("{") + 1);     int end = result.lastindexof("}");     string jsonresponse = result.substring(start, end);     try {         jsonobject table = new jsonobject(jsonresponse);         callback.onresult(table);     } catch (jsonexception e) {         e.printstacktrace();     } }  private string downloadurl(string urlstring) throws ioexception {     inputstream = null;      try {         url url = new url(urlstring);         httpurlconnection conn = (httpurlconnection) url.openconnection();         conn.setreadtimeout(10000 /* milliseconds */);         conn.setconnecttimeout(15000 /* milliseconds */);         conn.setrequestmethod("get");         conn.setdoinput(true);         // starts query         conn.connect();         int responsecode = conn.getresponsecode();         = conn.getinputstream();          string contentasstring = convertstreamtostring(is);         return contentasstring;     } {         if (is != null) {             is.close();         }     } }  private string convertstreamtostring(inputstream is) {     bufferedreader reader = new bufferedreader(new inputstreamreader(is));     stringbuilder sb = new stringbuilder();      string line = null;     try {         while ((line = reader.readline()) != null) {             sb.append(line + "\n");         }     } catch (ioexception e) {         e.printstacktrace();     } {         try {             is.close();         } catch (ioexception e) {             e.printstacktrace();         }     }     return sb.tostring(); } 

the activity_main layout file:

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:paddingbottom="@dimen/activity_vertical_margin" tools:context=".mainactivity">  <include layout="@layout/content_main" />  </relativelayout> 

and content_main layout file put spinner in:

<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context=".mainactivity"> tools:showin="@layout/activity_main">  <textview     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="select business type"     android:textcolor="#000000"     android:textsize="20sp" />  <spinner     android:id="@+id/spbussinesstype"     style="@style/base.widget.appcompat.spinner.underlined"     android:layout_width="match_parent"     android:layout_height="wrap_content"></spinner>  <button     android:id="@+id/submit"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_gravity="center"     android:layout_margin="10dp"     android:text="submit"     android:textsize="15sp" />  </linearlayout> 

what causing adapter not detect when 1 of name strings being selected? related how i'm parsing them google sheet?

you didnt notify arrayadapter data has changed, passed empty arraylist , upon filling array list, have notifiy adapter data has changed , time consider that, like

private void processjson(jsonobject object) {     try {         jsonarray rows = object.getjsonarray("rows");          (int r = 0; r < rows.length(); ++r) {             jsonobject row = rows.getjsonobject(r);             jsonarray columns = row.getjsonarray("c");              string name = columns.getjsonobject(0).getstring("v");             names.add(name);         }         adapterbusinesstype.notifydatasetchanged();     } catch (jsonexception e) {         e.printstacktrace();     } } 

that should help.


Comments

  1. Java - Setonitemselectedlistener Not Being Called? - >>>>> Download Now

    >>>>> Download Full

    Java - Setonitemselectedlistener Not Being Called? - >>>>> Download LINK

    >>>>> Download Now

    Java - Setonitemselectedlistener Not Being Called? - >>>>> Download Full

    >>>>> Download LINK 1q

    ReplyDelete

Post a Comment

Popular posts from this blog

python - Error importing VideoFileClip from moviepy : AttributeError: 'PermissionError' object has no attribute 'message' -

java - is not an enclosing class / new Intent Cannot Resolve Constructor -

qt - QML MouseArea onWheel event not working properly when inside QML Scrollview -