
我有一个带有5列的girdvIEw,我想给整个行上色,这意味着单击5个单元格. click效果很好,但是当我在单击颜色时滚动它们时,将设置两行或三行以后的单元格,因为它会更改视图位置.
这是我的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> 具有自定义布局:
<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" />和我的网格视图适配器代码:
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 from 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); } });最初它可以正常工作,但是在将滚动颜色设置为除单击的单元格之外的其他单元格之后,将其设置为其他颜色?我该怎么办??我不想使用基础适配器.
解决方法:
试试这个,让我知道它是如何工作的.
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 from 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;}@OverrIDepublic 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);} return v;}} 总结 以上是内存溢出为你收集整理的android-gridview单元格视图位置在滚动后发生更改…颜色设置为除单击的单元格以外的其他单元格全部内容,希望文章能够帮你解决android-gridview单元格视图位置在滚动后发生更改…颜色设置为除单击的单元格以外的其他单元格所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)