listview - ContentResolver$CursorWrapperInner cannot be cast -


my app uses cursorloader populate sqlite data listview. actually, cursorloader should populate 1 column (colunm_name_site) db listview.

the issue have is.... once information inserted in db, list item created ( can tell row lines shown every time data inserted) no text shown in listview listview blank. believe makes app crash once list view item clicked.

the logcat below not understand how decipher saying. have determined issue may in area of line 98 [ loginbundle.putstring("clickedwebsite",((logindetails) clickedobject).getsname());] dont know how correct issue.

logcat:

05-02 15:51:21.573: e/androidruntime(965): fatal exception: main 05-02 15:51:21.573: e/androidruntime(965): java.lang.classcastexception: android.content.contentresolver$cursorwrapperinner cannot cast com.loginplus.home.logindetails 05-02 15:51:21.573: e/androidruntime(965):  @ com.loginplus.home.loginlist.onitemclick(loginlist.java:98) 05-02 15:51:21.573: e/androidruntime(965):  @ android.widget.adapterview.performitemclick(adapterview.java:292) 05-02 15:51:21.573: e/androidruntime(965):  @ android.widget.abslistview.performitemclick(abslistview.java:1058) 05-02 15:51:21.573: e/androidruntime(965):  @ android.widget.abslistview$performclick.run(abslistview.java:2514) 05-02 15:51:21.573: e/androidruntime(965):  @ android.widget.abslistview.ontouchevent(abslistview.java:3180) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.view.dispatchtouchevent(view.java:5541) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:1951) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1712) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:1957) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1726) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:1957) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1726) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:1957) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1726) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtransformedtouchevent(viewgroup.java:1957) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewgroup.dispatchtouchevent(viewgroup.java:1726) 05-02 15:51:21.573: e/androidruntime(965):  @ com.android.internal.policy.impl.phonewindow$decorview.superdispatchtouchevent(phonewindow.java:1912) 05-02 15:51:21.573: e/androidruntime(965):  @ com.android.internal.policy.impl.phonewindow.superdispatchtouchevent(phonewindow.java:1371) 05-02 15:51:21.573: e/androidruntime(965):  @ android.app.activity.dispatchtouchevent(activity.java:2364) 05-02 15:51:21.573: e/androidruntime(965):  @ com.android.internal.policy.impl.phonewindow$decorview.dispatchtouchevent(phonewindow.java:1860) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.view.dispatchpointerevent(view.java:5721) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewrootimpl.deliverpointerevent(viewrootimpl.java:2890) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewrootimpl.handlemessage(viewrootimpl.java:2466) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewrootimpl.processinputevents(viewrootimpl.java:845) 05-02 15:51:21.573: e/androidruntime(965):  @ android.view.viewrootimpl.handlemessage(viewrootimpl.java:2475) 05-02 15:51:21.573: e/androidruntime(965):  @ android.os.handler.dispatchmessage(handler.java:99) 05-02 15:51:21.573: e/androidruntime(965):  @ android.os.looper.loop(looper.java:137) 05-02 15:51:21.573: e/androidruntime(965):  @ android.app.activitythread.main(activitythread.java:4424) 05-02 15:51:21.573: e/androidruntime(965):  @ java.lang.reflect.method.invokenative(native method) 05-02 15:51:21.573: e/androidruntime(965):  @ java.lang.reflect.method.invoke(method.java:511) 05-02 15:51:21.573: e/androidruntime(965):  @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784) 05-02 15:51:21.573: e/androidruntime(965):  @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551) 05-02 15:51:21.573: e/androidruntime(965):  @ dalvik.system.nativestart.main(native method) 

cursorloader:

public class loginlist extends fragmentactivity implements adapterview.onitemclicklistener, onclicklistener, loadermanager.loadercallbacks<cursor> {  private listview loginlist; private button weblogin; private simplecursoradapter adapter;  @override  public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.login_listview);  loginlist = (listview)findviewbyid(r.id.loginlist); loginlist.setonitemclicklistener(this);  weblogin = (button)findviewbyid(r.id.button3); weblogin.setonclicklistener(this);  //specify fileds display in list string[] = new string[] { listprovider.column_name_site };  //bind fields listview int[] = new int[] {r.id.loginlist };  // create cursoradapter , set display adapter = new simplecursoradapter(this, android.r.layout.simple_list_item_1, null, from, to, 0 );  loginlist.setadapter(adapter);  getsupportloadermanager().initloader( 0, null, this); }   @override public void onitemclick(adapterview<?> arg0, view arg1, int arg2, long arg3) { // todo auto-generated method stub toast.maketext(getapplicationcontext(), "selected id :" + arg2, toast.length_short).show();  intent updatedeletelogininfo = new intent (this, updatedeleteloginlist.class);  cursor clickedobject = (cursor)loginlist.getitematposition(0);  bundle loginbundle = new bundle(); loginbundle.putstring("clickedwebsite",((logindetails) clickedobject).getsname());  //this line 98 loginbundle.putstring("clickedwebaddress",((logindetails) clickedobject).getwurl()); loginbundle.putstring("clickedusername",((logindetails) clickedobject).getuname()); loginbundle.putstring("clickedpassword",((logindetails) clickedobject).getpword()); loginbundle.putstring("clickednotes",((logindetails) clickedobject).getlnotes());  updatedeletelogininfo.putextras(loginbundle);  startactivityforresult(updatedeletelogininfo, 0);  }   @override public void onclick(view arg0) { // todo auto-generated method stub intent webloginintent = new intent (this, loginplusactivity.class); startactivity(webloginintent); } 

logindetail class:

public class logindetails {  private int id; private string sname; private string wurl; private string uname; private string pword; private string lnotes;   // getting id public int getid(){     return id;     }     // setting id     public void setid(int id){     this.id = id;     }  public string getsname() {    return sname;    }    public void setsname(string sname) {    this.sname = sname;    }  public string getwurl() {    return wurl;    }    public void setwurl(string wurl) {    this.wurl = wurl;    }  public string getuname() {   return uname;   }   public void setuname(string uname) {   this.uname = uname;   }  public string getpword() {   return pword;   }   public void setpword(string pword) {   this.pword = pword;   }  public string getlnotes() {   return lnotes;   }   public void setlnotes(string lnotes) {   this.lnotes = lnotes;   } } 

i know old question , i'm answering since seems result on google..

you cannot cast cursor object. cursorwrapperinner comes using cursorloader , (from can tell) proxy object actual cursor loader. have instantiate object cursor static method takes cursor , returns object.

for instance:

public class logindetails {  private int id; private string sname; private string wurl; private string uname; private string pword; private string lnotes;  public static logindetails newinstance(cursor c){    logindetails ld = new logindetails()    int _id = c.getint(c.getcolumnindex("id"));    ...    ld.setid(_id);    return ld; } ....  } 

and in listview

@override     public void onlistitemclick(listview l, view v, int position, long id) {         cursor c = (cursor)adapter.getitem(position);         logindetails logindetails = logindetails.newinstance(c);         ...     } 

Comments

Post a Comment

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -