android - Remove item from custom listview on button click -
i have custom listview, has 2 textviews , 2 buttons (play , delete button) want when click delete button delete current line.
my adapter class
import java.util.arraylist; import android.content.context; import android.graphics.color; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.view.onclicklistener; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.button; import android.widget.textview; public class sunetepreferateadaptor extends baseadapter { class ob { string titlu, descriere; public ob(string titlu, string descriere) { this.titlu = titlu; this.descriere = descriere; } } arraylist<ob> lista; context context; public sunetepreferateadaptor(context context) { this.context = context; lista = new arraylist<ob>(); (int = 1; <= 20; i++) { lista.add(new ob("text", "text2")); } } @override public int getcount() { // todo auto-generated method stub return lista.size(); } @override public object getitem(int arg0) { // todo auto-generated method stub return lista.get(arg0); } @override public long getitemid(int arg0) { // todo auto-generated method stub return arg0; } @override public view getview(int arg0, view arg1, viewgroup arg2) { // todo auto-generated method stub layoutinflater inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); view row = inflater.inflate(r.layout.single_favsound_row, arg2, false); button b2 = (button) row.findviewbyid(r.id.button2); b2.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { // here, want delete current row of listview // // } }); textview titlu = (textview) row.findviewbyid(r.id.singletext2); titlu.settext(lista.get(arg0).titlu); titlu.settextcolor(color.white); titlu.settypeface(global.font1); textview descriere = (textview) row.findviewbyid(r.id.singletext1); descriere.settext(lista.get(arg0).descriere); descriere.settextcolor(color.white); descriere.settypeface(global.font1); return row; } } well how can that? i've tried making arraylist static , delete items on click.. no success..
you need not make arraylist static.
you need delete data list populates listview. call notifydatasetchanged(); refresh lsitview.
you can remove static key word , use
button b2 = (button) row.findviewbyid(r.id.button1); b2.settag(arg0); b2.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { int pos = (int)arg0.gettag(); lista.remove(pos); sunetepreferateadaptor.this.notifydatasetchanged(); } }); alternative :
you can pass list constructor of adapter class.
listview lv = (listview) this.findviewbyid(r.id.listview1); arraylist<ob> lista = new arraylist<ob>(); (int = 1; <= 20; i++) { lista.add(new ob("text", "text"+i)); } lv.setadapter(new sunetepreferateadaptor(this,lista));
then have in separate .java file
class ob { string titlu, descriere; public ob(string titlu, string descriere) { this.titlu = titlu; this.descriere = descriere; } } then
public class sunetepreferateadaptor extends baseadapter { arraylist<ob> lista; context context; public sunetepreferateadaptor(context context, arraylist<ob> lista ) { this.context = context; this.lista= lista; } @override public int getcount() { // todo auto-generated method stub return lista.size(); } @override public object getitem(int arg0) { // todo auto-generated method stub return lista.get(arg0); } @override public long getitemid(int arg0) { // todo auto-generated method stub return arg0; } @override public view getview(int arg0, view arg1, viewgroup arg2) { // todo auto-generated method stub layoutinflater inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); view row = inflater.inflate(r.layout.fg, arg2, false); button b2 = (button) row.findviewbyid(r.id.button1); b2.settag(arg0); b2.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { int pos = (int)arg0.gettag(); lista.remove(pos); sunetepreferateadaptor.this.notifydatasetchanged(); } }); textview titlu = (textview) row.findviewbyid(r.id.textview1); titlu.settext(lista.get(arg0).titlu); titlu.settextcolor(color.white); textview descriere = (textview) row.findviewbyid(r.id.textview2); descriere.settext(lista.get(arg0).descriere); return row; } }
Comments
Post a Comment