listview selected item color changed when come back from other activity in android -
listview selected item color changed when come back from other activity in android -
how listview selected item color remain changed when come other activity in android?
please give me proper solution. here, attached adapter class
public class selectedadapter extends arrayadapter { // used maintain selected position in listview private int selectedpos = -1; // init value not-selected private int selitem; public selectedadapter(context context, int textviewresourceid, list objects) { super(context, textviewresourceid, objects); } public void setselectedposition(int pos){ selectedpos = pos; // inform view of alter notifydatasetchanged(); } public int getselectedposition(){ homecoming selectedpos; } @override public view getview(int position, view convertview, viewgroup parent) { view v = convertview; // inflate view if it's null if (v == null) { layoutinflater vi = (layoutinflater)this.getcontext().getsystemservice(context.layout_inflater_service); v = vi.inflate(r.layout.simplerow, null); } // text view textview label = (textview)v.findviewbyid(r.id.rowtextview); // alter row color based on selected state if(selectedpos == position){ label.setbackgroundcolor(color.cyan); //label.setbackgroundresource(r.color.blue2); }else{ label.setbackgroundcolor(color.white); } label.settext(this.getitem(position).tostring()); /* // utilize other .tostring() myclass myobj = (myclass)this.getitem(position); label.settext(myobj.myreturnsstring()); */ return(v); } } main activity class
final context context = this; protected listview applv ; private arrayadapter<string> listadapter ; private selectedadapter selectedadapter; private arraylist list; list = new arraylist(); list.add("actuator"); list.add("agitator - liquid"); list.add("agitator - slurry"); list.add("air separator"); list.add("belt plow"); list.add("blower"); applv = (listview) findviewbyid( r.id.lvapps); applv.setchoicemode(listview.choice_mode_single); selectedadapter = new selectedadapter(this,0,list); selectedadapter.setnotifyonchange(true); applv.setadapter( selectedadapter ); applv.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview<?> parent, view v, int position, long id) { itemsel = applv.getadapter().getitemviewtype(position); // todo auto-generated method stub item = applv.getadapter().getitem(position).tostring(); selectedadapter.setselectedposition(position); } });
to u need save textview states selected or not. first create map global ur class as,
map<integer, boolean> map_textcolor=new hashmap<integer, boolean>(); then alter ur getview method this..
@override public view getview(int position, view convertview, viewgroup parent) { view v = convertview; // inflate view if it's null if (v == null) { layoutinflater vi = (layoutinflater)this.getcontext().getsystemservice(context.layout_inflater_service); v = vi.inflate(r.layout.simplerow, null); } // text view textview label = (textview)v.findviewbyid(r.id.rowtextview); ******************************************************************************* // alter row color based on selected state boolean selectedpos=map_textcolor.get(position); if(selectedpos!=null&&selectedpos.booleanvalue()) { //label.setselected(true); label.settextcolor(color.cyan); selected_view=label; } else { //label.setselected(false); label.settextcolor(color.white); } ****************************************************************************** label.settext(this.getitem(position).tostring()); then add together code listner this...
final int p=position; label.setonclicklistener(new onclicklistener() { @override public void onclick(view view) { // todo auto-generated method stub if(selected_view!=null) { //selected_view.setselected(false); label.settextcolor(color.white); map_textcolor.remove(prev_pos); } selected_view=view; // selected_view.setselected(true); label.settextcolor(color.cyan); map_textcolor.put(p, true); prev_pos=p; } }); /* // utilize other .tostring() myclass myobj = (myclass)this.getitem(position); label.settext(myobj.myreturnsstring()); */ return(v); } android listview
Comments
Post a Comment