android - gridview cell view position changes after scrolling ...color is set to different cells other than the clicked one -
i have girdview 5 columns , want color whole row means 5 cells on clicking. click works fine when scroll them on clicking color set 2 or 3 row later cells changes view position.
this gridview :
<gridview android:id="@+id/gridview2" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/cornflowerblue" android:gravity="center" android:horizontalspacing="5dp" android:numcolumns="5" android:verticalspacing="5dp"> </gridview> which has custonm layout:
<textview xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/lightblue" android:gravity="center_vertical" android:minheight="?android:attr/listpreferreditemheight" android:paddingleft="6dip" android:textappearance="?android:attr/textappearancelarge" android:textsize="22sp" /> and code gridview adapter:
public class fragment2 extends fragment { ............................ gridview2 = (gridview) getview().findviewbyid(r.id.gridview2); arrayadapter<string> adapter2 = new arrayadapter<string>( getactivity(), r.layout.custom_layout, stg1); //stg1-array gridview2.setadapter(adapter2); gridview2.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview<?> parent, view view, int position, long id) { string message; int p = (int) math.ceil(position / 5) * 5; //to color 5 cells starting on click try{ gridview2.getchildat(p).setbackgroundcolor(color.green); gridview2.getchildat(p+1).setbackgroundcolor(color.green); gridview2.getchildat(p+2).setbackgroundcolor(color.green); gridview2.getchildat(p+3).setbackgroundcolor(color.green); gridview2.getchildat(p+4).setbackgroundcolor(color.green); } }); initially works fine after scrolling color set different cells other clicked one?? should do?? dont wanna utilize base of operations adapter....
try , allow me know how works.
public int p=-1; /* ...other stuff... */ gridview2 = (gridview) getview().findviewbyid(r.id.gridview2); listadapter<string> adapter2 = new listadapter<string>( getactivity(), r.layout.custom_layout, stg1); //stg1-array gridview2.setadapter(adapter2); gridview2.setonitemclicklistener(new onitemclicklistener() { public void onitemclick(adapterview<?> parent, view view, int position, long id) { string message; int p = (int) math.ceil(position / 5) * 5; //to color 5 cells starting on click } }); /* ...other stuff... */ public class listadapter extends arrayadapter<string> { private list<string> items; public listadapter(context context, int resource, list<item> items) { super(context, resource, items); this.items = items; } @override public view getview(int position, view convertview, viewgroup parent) { view v = convertview; if (v == null) { layoutinflater vi; vi = layoutinflater.from(getcontext()); v = vi.inflate(r.layout.custom_layout, null); if(position==p) v.setbackgroundcolor(color.green); if(position==p+1) v.setbackgroundcolor(color.green); if(position==p+2) v.setbackgroundcolor(color.green); if(position==p+3) v.setbackgroundcolor(color.green); if(position==p+4) v.setbackgroundcolor(color.green); } homecoming v; } } android gridview android-gridview
No comments:
Post a Comment