android - RecyclerView and database, unable to delete items -
ok, have been going around in circles past couple of days on problem, unable find working solution, perhaps don't know how phrase question right. here goes.
i working on project using recyclerview adapter, load , display simple elements sqlite database, containing string quote , string reference image ressource. part works fine, can't seem able delete items.
i have gone through code making sure connection database opened when needed , closed afterwards, , there should no open issues here.
i can delete item inside recyclerview adapter when clicking on element, if exit , enter again, deleted items have been loaded again. places problem database think, or perhaps sort of dueling banjos problems functions recreates deleted item. have followed code numerous times now, , life in me, can't seem solve issue.
at moment in delete click event running delete call database , recyclerview adapter, problem persists.
i hoping input pinpoint issue. not sure code include in question, have included recyclerview adapter , database adapter. , know how close impossible answer these sort of questions without being able see code, still.
*please excuse mess. have been trying out lot of things.
// recyclerview adapter
public class recyclerviewadapter extends recyclerview.adapter<recyclerviewadapter.dataobjectholder> { private arraylist<instance> instancedataset; private theclicklistener clicklistener; public context context; private dbadapter db; private button deletebutton; private int theposition; public recyclerviewadapter(context context) { this.context = context; } // viewholder inner class class dataobjectholder extends recyclerview.viewholder implements view.onclicklistener { cardview cv; textview comment; imageview imageviewlocaladapter; public dataobjectholder(final view itemview) { super(itemview); cv = (cardview) itemview.findviewbyid(r.id.cardview_layout); comment = (textview) itemview.findviewbyid(r.id.cardview_textview); imageviewlocaladapter = (imageview) itemview.findviewbyid(r.id.cardview_imageview); deletebutton = (button) itemview.findviewbyid(r.id.delete_button); //itemview.setonclicklistener(this); } // here displays position of item clicked @override public void onclick(view v) { //intent intent = new intent(context, singleinstancefragment.class); // log.d(" clicking ", "onclick " + getposition()); //clicklistener.onthegreatitemclick(getposition(), v); } } public void setonitemclicklistener(theclicklistener clicklistener) { this.clicklistener = clicklistener; } public recyclerviewadapter(arraylist<instance> instancedataset, context context) { this.instancedataset = instancedataset; this.context = context; } // viewholder @override public dataobjectholder oncreateviewholder(viewgroup viewgroup, int viewtype) { view view = layoutinflater.from(viewgroup.getcontext()).inflate(r.layout.cardview, viewgroup, false); dataobjectholder dataobjectholder = new dataobjectholder(view); return dataobjectholder; } @override public void onbindviewholder(final dataobjectholder holder, final int position) { final instance inst = instancedataset.get(position); opendb(); theposition = position; holder.comment.settext(inst.getcomment()); string middle = "/sdcard/unapp/"; uri uri = uri.parse("file://" + middle + inst.getimage()); picasso.with(holder.imageviewlocaladapter.getcontext()) .load(uri) .fit().centercrop() .into(holder.imageviewlocaladapter); final recyclerview.viewholder reholder = holder; holder.imageviewlocaladapter.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { deleteitem(position); log.d("position in ", " recyclerview adapter " + position); onbindviewholder(holder, position); // intent intent = new intent(context, singleinstanceactivity.class); // intent.putextra("position", position); // // context.startactivity(intent); } }); } public void additem(instance dataobj, int index) { instancedataset.add(dataobj); notifyiteminserted(index); } public void deleteitem(int index) { log.d("count", "deleteitem " +getitemcount()); instancedataset.remove(index); db.deleterow(index); db.close(); notifyitemremoved(index); //new recyclerviewadapter(instancedataset, context); log.d("count", "deleteitem deux " +getitemcount()); } private void opendb() { db = new dbadapter(this.context); db.open(); } @override public int getitemcount() { return instancedataset.size(); } public instance getitem(int position) { return instancedataset.get(position); } // clicklistener interface public interface theclicklistener { void onthegreatitemclick(int position, view v); } } // database adapter
public class recyclerviewadapter extends recyclerview.adapter<recyclerviewadapter.dataobjectholder> { private arraylist<instance> instancedataset; private theclicklistener clicklistener; public context context; private dbadapter db; private button deletebutton; private int theposition; public recyclerviewadapter(context context) { this.context = context; } // viewholder inner class class dataobjectholder extends recyclerview.viewholder implements view.onclicklistener { cardview cv; textview comment; imageview imageviewlocaladapter; public dataobjectholder(final view itemview) { super(itemview); cv = (cardview) itemview.findviewbyid(r.id.cardview_layout); comment = (textview) itemview.findviewbyid(r.id.cardview_textview); imageviewlocaladapter = (imageview) itemview.findviewbyid(r.id.cardview_imageview); deletebutton = (button) itemview.findviewbyid(r.id.delete_button); //itemview.setonclicklistener(this); } // here displays position of item clicked @override public void onclick(view v) { //intent intent = new intent(context, singleinstancefragment.class); // log.d(" clicking ", "onclick " + getposition()); //clicklistener.onthegreatitemclick(getposition(), v); } } public void setonitemclicklistener(theclicklistener clicklistener) { this.clicklistener = clicklistener; } public recyclerviewadapter(arraylist<instance> instancedataset, context context) { this.instancedataset = instancedataset; this.context = context; } // viewholder @override public dataobjectholder oncreateviewholder(viewgroup viewgroup, int viewtype) { view view = layoutinflater.from(viewgroup.getcontext()).inflate(r.layout.cardview, viewgroup, false); dataobjectholder dataobjectholder = new dataobjectholder(view); return dataobjectholder; } @override public void onbindviewholder(final dataobjectholder holder, final int position) { final instance inst = instancedataset.get(position); opendb(); theposition = position; holder.comment.settext(inst.getcomment()); string middle = "/sdcard/unapp/"; uri uri = uri.parse("file://" + middle + inst.getimage()); picasso.with(holder.imageviewlocaladapter.getcontext()) .load(uri) .fit().centercrop() .into(holder.imageviewlocaladapter); final recyclerview.viewholder reholder = holder; holder.imageviewlocaladapter.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { deleteitem(position); log.d("position in ", " recyclerview adapter " + position); onbindviewholder(holder, position); // intent intent = new intent(context, singleinstanceactivity.class); // intent.putextra("position", position); // // context.startactivity(intent); } }); } public void additem(instance dataobj, int index) { instancedataset.add(dataobj); notifyiteminserted(index); } public void deleteitem(int index) { log.d("count", "deleteitem " +getitemcount()); instancedataset.remove(index); db.deleterow(index); db.close(); notifyitemremoved(index); //new recyclerviewadapter(instancedataset, context); log.d("count", "deleteitem deux " +getitemcount()); } private void opendb() { db = new dbadapter(this.context); db.open(); } @override public int getitemcount() { return instancedataset.size(); } public instance getitem(int position) { return instancedataset.get(position); } // clicklistener interface public interface theclicklistener { void onthegreatitemclick(int position, view v); } }
Comments
Post a Comment