Issue in setting bgcolor for gridview items in android -
this may simple couldn't find solution this. problem setting background color gridview items inside onitemlongclicklistener method.
i have 2 linear layouts, 1 contains textview , gridview , contains buttons(i set layout menubar on top of screen). hide second 1 screen using setvisibility(view.gone) , when ever itemlongclick on gridview item second 1 appear using setvisibility(view.visible) @ same time want change bgcolor of clicked/selected item.
everything working fine whenever second layout visible , whenever scrolling gridview, clicked/selected bgcolor disappear.
i tried many ways couldn't solve problem. please have on coding , tell me did wrong.
gv.setonitemlongclicklistener(new onitemlongclicklistener() { public boolean onitemlongclick(adapterview<?> parent, view strings, int position, long id) { final option o = dir.get(position); //gv.performitemclick(gv, position,gv.getitemidatposition(position)); /* if(pos!=-1) { gv.getchildat(pos).setbackgroundcolor(0xffffffff); }*/ strings.setselected(true); // textview tx=(textview)strings.findviewbyid(r.id.grid_item_label); // tx.findviewbyid(id).setbackgroundcolor(0xff0000ff); /*if(!o.getdata().equalsignorecase("o")){ //gv.getchildat(position).setselected(true); fill(new file(new file(o.getpath()).getparent()),position); }*/ /*try { gv.getselectedview().setbackgroundcolor(0xffcccccc); } catch(exception e){ toast.maketext(fffsdactivity.this, "ok\n"+e,toast.length_short).show(); }*/ /*for(int i=0;i<nofifo;i++) { try{ if(gv.getchildat(i).isselected()) { gv.getchildat(i).setbackgroundcolor(0xffbbbbbb); // toast.maketext(fffsdactivity.this, "yes ok\n"+i,toast.length_short).show(); } else{ gv.getchildat(i).setbackgroundcolor(0xffffffff); //toast.maketext(fffsdactivity.this, "no ok\n"+i,toast.length_short).show(); } } catch(exception e) { toast.maketext(fffsdactivity.this, "i wanna e :"+e+"\n"+i,toast.length_short).show(); } try{ gv.getchildat(i).setselected(false); //toast.maketext(fffsdactivity.this, "gv ok\n"+i,toast.length_short).show(); }catch(exception e){ toast.maketext(fffsdactivity.this, "i wanna setselected e :"+e+"\n"+i,toast.length_short).show(); } }*/ // toast.maketext(fffsdactivity.this, "i wanna c :"+gv.getchildat(position).isselected(),toast.length_long).show(); //gv.getselectedview().setbackgroundcolor(0xffcccccc); pos=position; if(o.getdata().equalsignorecase("parent directory")) { fill(new file(o.getpath()),-1); } else if(o.getdata().equalsignorecase("folder")) { llfftools.setvisibility(view.visible); translateanimation slide = new translateanimation(0, 0,-llfftools.getheight(),0 ); slide.setduration(100); slide.setfillafter(true); llfftools.startanimation(slide); //fill(new file(new file(o.getpath()).getparent())); onfolderclick(o); //gv.getchildat(position).setbackgroundcolor(0xffaaaaaa); }
and baseadapter :
public class imageadapter extends baseadapter { private context context; private final list<option> mobilevalues; public imageadapter(context context,list<option> fofivalues) { this.context = context; this.mobilevalues = fofivalues; } public view getview(int position, view convertview, viewgroup parent) { layoutinflater inflater = (layoutinflater) context .getsystemservice(context.layout_inflater_service); view gridview; //if (convertview == null) { gridview = new view(context); // layout mobile.xml gridview = inflater.inflate(r.layout.mobile, null); /*} else { gridview = (view) convertview; }*/ // set value textview textview textview = (textview) gridview.findviewbyid(r.id.grid_item_label); //to set max no.of chararcters in textview string iname=(mobilevalues.get(position).getname().length()>10)?mobilevalues.get(position).getname().substring(0, 9)+"..":mobilevalues.get(position).getname(); if(mobilevalues.get(position).getposition()==position&&mobilevalues.get(position).getposition()!=-1) { textview.settext(iname); textview.settextcolor(0xff0000ff); } else{ textview.settext(iname); } // set image based on selected text final imageview imageview = (imageview) gridview.findviewbyid(r.id.grid_item_image); /*gridview.setonlongclicklistener(new onlongclicklistener() { public boolean onlongclick(view v) { gridview.setbackgroundcolor(0xffaaaaaa); // todo auto-generated method stub return false; } });*/ string mobile = mobilevalues.get(position).getdata(); if(mobile=="o") { //do nothing imageview.setimageresource(r.drawable.white); } else if(mobile=="parent directory") { imageview.setimageresource(r.drawable.parent); } else if (mobile=="folder") { imageview.setimageresource(r.drawable.folderg); } else{ imageview.setimageresource(r.drawable.picicon); } return gridview; } public int getcount() { return mobilevalues.size(); } public object getitem(int position) { return null; } public long getitemid(int position) { return 0; } }
thanks in advance , if want more please let me know...
in xml set android:background attribute xml this:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/home_btn_sessions_pressed" android:state_focused="true" android:state_pressed="true" /> <item android:drawable="@drawable/home_btn_sessions_pressed" android:state_focused="false" android:state_pressed="true" /> <item android:drawable="@drawable/home_btn_sessions_selected" android:state_focused="true" /> <item android:drawable="@drawable/home_btn_sessions_default" android:state_focused="false" android:state_pressed="false" /> </selector>
don't need write java code here.
Comments
Post a Comment