android - Change layout of next item in ListView -
i'm beginner android developer.
i need change layout of next item in listview clicking button on current item. don't understand how access next item.
so, how change layout of next item?
here code:
adapter class
public class stepsadapter extends arrayadapter<string> { private static final int view_type_first = 0; private static final int view_type_next = 1; private static final int view_type_count = 2; private list<string> steps; private context mcontext; public stepsadapter(context context, int resource, int textviewresourceid, list<string> objects) { super(context, resource, textviewresourceid, objects); mcontext = context; steps = objects; } public static class viewholder { public final button btndone; public final textview txtview; public final textview txtviewmain; public viewholder(view view) { btndone = (button)view.findviewbyid(r.id.right); txtview = (textview)view.findviewbyid(r.id.list_item_step_textview_finish); txtviewmain = (textview)view.findviewbyid(r.id.list_item_step_textview); } } @override public int getitemviewtype(int position) { return (position != 0) ? view_type_first : view_type_next; } @override public int getviewtypecount() { return view_type_count; } @override public view getview(int position, view convertview, final viewgroup parent) { int viewtype = getitemviewtype(position); int layoutid = -1; switch (viewtype){ case view_type_first: { layoutid = r.layout.list_item_step; break; } case view_type_next: { layoutid = r.layout.list_item_first_step; break; } } view view = layoutinflater.from(mcontext).inflate(layoutid, parent, false); final viewholder viewholder = new viewholder(view); view.settag(viewholder); viewholder.txtviewmain.settext(steps.get(position)); viewholder.btndone.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { view parentrow = (view) v.getparent(); listview listview = (listview) parentrow.getparent(); int listvcount = listview.getcount(); int position = listview.getpositionforview(parentrow); viewholder.txtview.setvisibility(view.visible); viewholder.btndone.setvisibility(view.gone); string textfinishstep = "passed step " + (position + 1) + " : " + viewholder.txtviewmain.gettext(); viewholder.txtview.settext(textfinishstep); viewholder.txtviewmain.setvisibility(view.gone); } }); return view; } }
in stepsadapter take 1 field follows
private int cposition=-1; and take 1 method follows
public void setposition(int cposition){ this.cposition=cposition; } and in
yourlistview.setonitemclicklistener(new onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { adapter.setposition(position); adapter.notifydatasetchanged(); } }); and in
@override public view getview(int position, view convertview, final viewgroup parent) { if(cposition!=-1&&position=cposition+1){ //change list item layout here cposition=-1; } } hope helps you.
Comments
Post a Comment