java - how to fix ArrayIndexOutOfBoundsException in android -


public class readrecords extends listactivity {      private string[] colummns = new string[] { contactscontract.contacts._id,             contactscontract.contacts.display_name,             contactscontract.contacts.has_phone_number };     private uri contactslisturi = contactscontract.contacts.content_uri;     private uri phoneuri = contactscontract.commondatakinds.phone.content_uri;     private string contactiduri = contactscontract.commondatakinds.phone.contact_id;     private string numberuri = contactscontract.commondatakinds.phone.number;     private cursor cursor;     private arraylist<string> arraylist;      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         arraylist = new arraylist<string>();          cursor = managedquery(contactslisturi, null, null, null, null);          readcontacts();      }      void readcontacts() {          if (cursor == null) {             toast.maketext(getapplicationcontext(),                     "no contacts in directory", toast.length_short).show();         } else {             while (cursor.movetonext()) {                 string id = cursor                         .getstring(cursor.getcolumnindex(colummns[0]));                 string name = cursor.getstring(cursor                         .getcolumnindex(colummns[1]));                 if (integer.parseint(cursor.getstring(cursor                         .getcolumnindex(colummns[2]))) > 0) {                      cursor numcursor = managedquery(phoneuri, null,                             contactiduri + "=?", new string[] { id }, null);                     if (numcursor.getcount() > 0)                         while (numcursor.movetonext()) {                             string phone = numcursor.getstring(numcursor                                     .getcolumnindex(numberuri));                             arraylist.add(name + "~" + phone);                         }                 }             }              getlistview().setadapter(                     new myadapter(arraylist, r.layout.namenumber,                             getlayoutinflater()));         }      }  } 

this code fro retrieve contact detail device , able view our contact when scroll down see contact show exception array index out of bound expectation.length=1;index=1. error coming not able understand how fix please suggest me.

here log :

03-23 14:47:42.971: e/androidruntime(24157): fatal exception: main 03-23 14:47:42.971: e/androidruntime(24157): java.lang.arrayindexoutofboundsexception: length=1; index=1 03-23 14:47:42.971: e/androidruntime(24157):    @ com.stallion.contentproviderdemo.myadapter.getview(myadapter.java:47) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.widget.abslistview.obtainview(abslistview.java:2012) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.widget.listview.makeandaddview(listview.java:1772) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.widget.listview.filldown(listview.java:672) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.widget.listview.fillgap(listview.java:636) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.widget.abslistview.trackmotionscroll(abslistview.java:4546) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.widget.abslistview$flingrunnable.run(abslistview.java:3813) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.os.handler.handlecallback(handler.java:605) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.os.handler.dispatchmessage(handler.java:92) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.os.looper.loop(looper.java:137) 03-23 14:47:42.971: e/androidruntime(24157):    @ android.app.activitythread.main(activitythread.java:4482) 03-23 14:47:42.971: e/androidruntime(24157):    @ java.lang.reflect.method.invokenative(native method) 03-23 14:47:42.971: e/androidruntime(24157):    @ java.lang.reflect.method.invoke(method.java:511) 03-23 14:47:42.971: e/androidruntime(24157):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:787) 03-23 14:47:42.971: e/androidruntime(24157):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:554) 03-23 14:47:42.971: e/androidruntime(24157):    @ dalvik.system.nativestart.main(native method)   public class myadapter extends baseadapter{      private arraylist<string> arraylist;     private int layoutnumber;     private layoutinflater inflater;      public myadapter(arraylist<string> arraylist, int namenumber, layoutinflater inflater) {         this.arraylist = arraylist;         this.layoutnumber = namenumber;         this.inflater = inflater;     }      @override     public int getcount() {         return arraylist.size();     }      @override     public object getitem(int arg0) {          return arraylist.get(arg0);     }      @override     public long getitemid(int arg0) {         return arg0;     }      @override     public view getview(int arg0, view arg1, viewgroup arg2) {          view view = inflater.inflate(layoutnumber, arg2, false);         textview name = (textview)view.findviewbyid(r.id.listname);         textview number = (textview)view.findviewbyid(r.id.listnumber);         string s[] = arraylist.get(arg0).split("~");         name.settext(s[0]);         number.settext(s[1]);         return view;     } 

this adapter class plz check , tell me wrong ?

do :

before calling while (cursor.movetonext()) {} , call

cursor.movetofirst() , try


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -