我有一个带有5列的girdview,我想给整个行上色,这意味着单击5个单元格. click效果很好,但是当我在单击颜色时滚动它们时,将设置两行或三行以后的单元格,因为它会更改视图位置.
这是我的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">
具有自定义布局:
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 adapter2 = new ArrayAdapter(
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);
}
});
最初它可以正常工作,但是在将滚动颜色设置为除单击的单元格之外的其他单元格之后,将其设置为其他颜色?我该怎么办??我不想使用基础适配器.