Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改网格单元的颜色_Android_Gridview_Onclick - Fatal编程技术网

Android 更改网格单元的颜色

Android 更改网格单元的颜色,android,gridview,onclick,Android,Gridview,Onclick,我想使用网格位置的数量更改网格单元的颜色。e、 我有5X6网格意味着30个网格项目,所以我想更改第21个位置的颜色。请告诉我如何在不单击网格视图的情况下执行此操作。首先,您必须确定网格的顺序、列的位置和线的位置。例如: 123445 678910 等等 然后做一个乘法运算 i = Y*numberOfColums + X; grid[i].myColor = Color(R,G,B); 我假设索引为0,这意味着: 如果有6列: 0 <= X <= 5 0为了在扩大网格单元布局的

我想使用网格位置的数量更改网格单元的颜色。e、 我有5X6网格意味着30个网格项目,所以我想更改第21个位置的颜色。请告诉我如何在不单击网格视图的情况下执行此操作。

首先,您必须确定网格的顺序、列的位置和线的位置。例如:

123445

678910

等等

然后做一个乘法运算

i = Y*numberOfColums  + X;
grid[i].myColor = Color(R,G,B);
我假设索引为0,这意味着: 如果有6列:

0 <= X <= 5

0为了在扩大网格单元布局的同时设置网格单元的颜色,请在baseadapter类中创建一个单元的数组,然后根据需要设置颜色

然后


此处griditm是布局网格项的id,您需要为此定义自定义适配器。
在适配器的
getView()
方法中,如果等于21,则必须检查
position
参数。如果等于21,则更改当前单元格的背景

如果您还没有定义自定义适配器的经验,那么首先通过一个示例将更有意义。

下面是一个使用

的GridView示例,您的GridView是否有适配器?那么我看不出您有什么问题。只要在到达第21个元素时更改颜色即可
0 <= Y <=4
for(int x = 0; x < numberOfColumns; x++)
{
    for(int y = 0; y < numberOfRows; y++)
    {
        i = Y*numberOfColums  + X;
    }
}
LayoutInflater li = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        grd = li.inflate(R.layout.grid_item, null);
FrameLayout dgcl = (FrameLayout) grd.findViewById(R.id.grditm);
        parent_l[position] = dgcl;
parent_l[21].setBackgroundColor(Color.RED);