How to listview row in textview change text in android? -
i develop listview in custom row created.but used list button click open alert dialog box , selected radio button dialog dismiss , call update function how change row text .my code below.please give me solution.and saved state row.
public class almessagesadapter extends arrayadapter<dtoallmessages> { private layoutinflater inflator; private arraylist<dtoallmessages> userlist; public almessagesadapter(activity context, arraylist<dtoallmessages> list) { super(context, r.layout.custom_list, list); this.userlist = list; inflator = context.getlayoutinflater(); } @override public view getview(final int position, view convertview, viewgroup parent) { viewholder holder = null; if (convertview == null) { convertview = inflator.inflate(r.layout.custom_list, null); holder = new viewholder(); holder.title = (textview) convertview.findviewbyid(r.id.tvname); holder.date_cr = (textview) convertview .findviewbyid(r.id.tvdate); holder.img = (imageview) convertview.findviewbyid(r.id.ivicon); holder.tokenbtn = (textview) convertview .findviewbyid(r.id.tokenbtn); convertview.settag(holder); convertview.settag(r.id.tvname, holder.title); convertview.settag(r.id.tvdate, holder.date_cr); convertview.settag(r.id.ivicon, holder.img); convertview.settag(r.id.tokenbtn, holder.tokenbtn); } else { holder = (viewholder) convertview.gettag(); } token = userlist.get(position).gettoken(); token = token.substring(0, token.length() - 3); holder.title.settext(userlist.get(position).getname() + "(" + token + ")"); string type_data = userlist.get(position).gettype().tostring(); if ((type_data.equals("text")) || (type_data.equals("photo"))) { holder.date_cr.settext(userlist.get(position).gettype() + ":received " + userlist.get(position).getcreated_date()); holder.tokenbtn.setvisibility(view.visible); list.setitemscanfocus(true); } else if (type_data.equals("out")) { holder.date_cr.settext(userlist.get(position).gettype() + ":sent " + userlist.get(position).getcreated_date()); holder.tokenbtn.setvisibility(view.gone); } if (type_data.equals("text")) { holder.img.setbackgroundresource(r.drawable.chatmessage); } else if (type_data.equals("photo")) { holder.img.setbackgroundresource(r.drawable.photomessage); } else if (type_data.equals("out")) { holder.img.setbackgroundresource(r.drawable.outmessafe); } if (position % 2 == 0) { convertview.setbackgroundresource(r.drawable.whitebackground); } else { convertview.setbackgroundresource(r.drawable.greybackground); } holder.tokenbtn.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { alertboxshow(position); } }); return convertview; } class viewholder { protected imageview img; protected textview date_cr; protected textview title; protected textview tokenbtn; } }
and holder.tokenbutton click open alertdialog box incode below::
public void alertboxshow(int position) { final int pos=position; log.v("log_tag"," position ::"+pos); final charsequence[] items = { " 5 ", " 10 ", " 15 "}; alertdialog.builder alt_bld = new alertdialog.builder(this); alt_bld.setsinglechoiceitems(items, -1, new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int which) { switch (which) { case 0: updatestatus(pos,5); dialog.dismiss(); // code when first option seletced break; case 1: updatestatus(pos,10); // code when 2nd option seletced dialog.dismiss(); break; case 2: updatestatus(pos,15); dialog.dismiss(); // code when 3rd option seletced break; } } }); alertdialog alert = alt_bld.create(); alert.show(); }
and call updatestatus function in want holder.title settext , refresh list row how possible.and update status function in below.
private void updatestatus(int index, int radioselectvalue) { holder.title.settext(userlist.get(index).getname() + "(" + token + ")"); }
you can use settag()
, gettag()
position of row item clicked,
below settag()
convertview.settag(r.id.tokenbtn, postion);
and gettag()
inside holder.tokenbtn
onclick()
int pos = (integer)v.gettag(r.id.tokenbtn); textview txtview = (textview)v.gettag(r.id.tvname); // use textview update value. alertboxshow(pos);
Comments
Post a Comment