1

グリッド位置の数を使用してグリッドセルの色を変更したい。たとえば、5X6グリッドは30 gridItemsを意味するので、21番目の位置の色を変更したいと思います。グリッドビューをクリックせずにこれを行う方法を教えてください。

4

3 に答える 3

1

これにはカスタム アダプタを定義する必要があります。アダプター
のメソッドでは、パラメーターが 21 と等しいかどうかを確認する必要があります。21 と等しい場合は、現在のセルの背景を変更します。getView()position

カスタム アダプタを定義した経験がない場合は、最初に例を確認する方が理にかなっています。カスタム アダプターを
使用して画像を表示する GridView の例を次に示します。

于 2012-09-07T10:12:58.507 に答える
0

グリッド セルのレイアウトを拡張しながらグリッド セルに色を設定するには、baseadapter クラスでセルの配列を作成し、必要に応じて色を設定します。

お気に入り

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);

ここで griditm はレイアウト grid_item の ID です

于 2012-09-07T10:01:03.023 に答える
-2

まず、グリッドの順序、列はどこ、線はどこかを決定する必要があります。例えば:

1 2 3 4 5

6 7 8 9 10

等..

その後、乗算を行うだけです

i = Y*numberOfColums  + X;
grid[i].myColor = Color(R,G,B);

私は0ベースのインデックスを想定しています。つまり、6つの列がある場合:

0 <= X <= 5

5行ある場合

0 <= Y <=4

0ベースのインデックスを使用すると、非常に簡単な方法でグリッド全体を反復処理できます。

for(int x = 0; x < numberOfColumns; x++)
{
    for(int y = 0; y < numberOfRows; y++)
    {
        i = Y*numberOfColums  + X;
    }
}
于 2012-09-07T09:50:13.790 に答える