i know there lots of threads more or less same topic none of them covers situation:
i trying delete button delete 1 row on list view , delete button appear in each row got part work can't work in main activity. code keeps breaking every time put part in code:
imagebutton removebutton = (imagebutton) findviewbyid(r.id.btndel); removebutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { onremovebuttonclick(); } private void onremovebuttonclick() { todoitem item = (todoitem) v.gettag(); notifydatasetchanged(); }
my mainactivity
works fine without bit of code. don't know if code or if placing in mainactivity
if please tell appreciated.
mainactivity.java
public class mainactivity extends appcompatactivity { private static final string log_tag = "todoapp"; private todolistmanager listmanager; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); listview todolist = (listview) findviewbyid(r.id.todo_list); listmanager = new todolistmanager(getapplicationcontext()); todoitemadapter adapter = new todoitemadapter(this, listmanager.getlist()); todolist.setadapter(adapter); imagebutton addbutton = (imagebutton) findviewbyid(r.id.add_item); addbutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { onaddbuttonclick(); } }); } @override protected void onpause() { super.onpause(); listmanager.savelist(); } private void onaddbuttonclick() { alertdialog.builder builder = new alertdialog.builder(this); builder.settitle(r.string.add_item); final edittext input = new edittext(this); input.setinputtype(inputtype.type_class_text); builder.setview(input); builder.setpositivebutton( r.string.ok, new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialoginterface, int i) { //add item list todoitem item = new todoitem( input.gettext().tostring(), false ); listmanager.additem(item); log.i(log_tag, input.gettext().tostring()); } }); builder.setnegativebutton( r.string.cancel, new dialoginterface.onclicklistener(){ @override public void onclick(dialoginterface dialog, int which) { dialog.cancel(); } }); builder.show(); } private class todoitemadapter extends arrayadapter<todoitem> { private context context; private list<todoitem> items; public todoitemadapter(context context, list<todoitem> items){ super(context,-1, items); this.context = context; this.items = items; } @override public view getview(int position, view convertview, viewgroup parent) { if(convertview == null) { layoutinflater inflater = (layoutinflater) context. getsystemservice(context.layout_inflater_service); convertview = inflater.inflate(r.layout.to_do_item_layout, parent, false); } textview textview = (textview) convertview.findviewbyid(r.id.item); checkbox checkbox = (checkbox) convertview.findviewbyid(r.id.checkbox); textview.settext(items.get(position).getdescription()); checkbox.setchecked(items.get(position).iscomplete()); convertview.settag(items.get(position)); convertview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { todoitem item = (todoitem) v.gettag(); item.togglecomplete(); notifydatasetchanged(); } }); return convertview; } } }
todolistmanager.java
public class todolistmanager { private static final string app_preferences = "todoapp"; private static final string todo_items = "itemslist"; private list<todoitem> items; private sharedpreferences saveddata; public todolistmanager(context context) { saveddata = context.getsharedpreferences ( app_preferences, context.mode_private ); string json = saveddata.getstring(todo_items, null); if (json == null) { items = new arraylist<>(); } else { type type = new typetoken<list<todoitem>>() {}.gettype(); items = new gson().fromjson(json, type); } } public list<todoitem> getlist() { return items; } public void additem(todoitem item) { items.add(item); savelist(); } public void savelist() { sharedpreferences.editor edit =saveddata.edit(); edit.clear(); string json = new gson().tojson(items); edit.putstring(todo_items, json); edit.apply(); } }
todoitem.java
public class todoitem { private string description; private boolean iscomplete; public todoitem (string description,boolean iscomplete) { this.description = description; this.iscomplete = iscomplete; } public string getdescription() { return description; } public boolean iscomplete() { return iscomplete; } public void togglecomplete() { iscomplete = !iscomplete; } @override public string tostring() { return description; } }
1.) add button to_do_item_layout first
2.) add code add button each item
button btn = (button) convertview.findviewbyid(r.id.my_btn);
3.) add listener it
btn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { items.remove(items.get(position)); } });
Comments
Post a Comment