i have many listactivity classes in app act pretty same : list property (textview) on left , value (button) on right. when press button want create dialog. because of repetability, decided create general custom arrayadapter :
public class generaltvbtnadapter extends arrayadapter<settingsproperty> { private context mcontext; private arraylist<settingsproperty> mprops; private int mlayout; private buttonlistener mlistener; public generaltvbtnadapter(context context, int tv_btn_layout, arraylist<settingsproperty> objects, buttonlistener listener) { super(context, tv_btn_layout, objects); mcontext = context; mprops = objects; mlayout = tv_btn_layout; mlistener = listener; } public void updatevalue (int position, string newvalue) { mprops.get(position).setvalue(newvalue); notifydatasetchanged(); } private class viewholder { textview mname; button mvalue; } @override public view getview(final int position, view convertview, viewgroup parent) { viewholder holder; if (convertview == null) { holder = new viewholder(); layoutinflater minflater = layoutinflater.from(mcontext); convertview = minflater.inflate(mlayout, null); holder.mname = (textview) convertview.findviewbyid(r.id.prop); holder.mvalue = (button) convertview.findviewbyid(r.id.value); convertview.settag(holder); } else { holder = (viewholder) convertview.gettag(); } holder.mname.settext(mprops.get(position).getname()); holder.mvalue.settext(mprops.get(position).getvalue()); holder.mvalue.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { mlistener.onbuttonclicked(position); } }); return convertview; } public interface buttonlistener { void onbuttonclicked (int position); } } i want know how can remove buttonlisteners listeners after calling activity destroyed.
p.s :settingsproperty pojo string name , string value , tv_btn_layout layout textview , button described above.
if intent remove custom listener, have reset null. can create setter
public void setbuttonlistener (final buttonlistener listener) { mlistener = listener; } and call if outside null. sure, before accessing mlistener, check null values
Comments
Post a Comment