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
Post a Comment