0

基本的に、アラート ダイアログで作成された GridView があります。アレイ アダプタを通常どおりに設定すると、アレイ内のすべてが正常に表示されます。ただし、コードの後半で、GridView で特定の値を強調表示したい場合、背景色を変更すると、null ポインター例外がスローされます。それがどの行かはわかっていますが、子が含まれている必要がありますが、含まれていません。

次のように作成された GridView:

GridView g = new GridView(this);

final ArrayAdapter<String> Wordadapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.style,WordSearch);

String[] lag = WordSearch;
g.setId(2);
g.setBackgroundColor(getResources().getColor(android.R.color.black));
g.setHorizontalSpacing(-20);
g.setPadding(60,5, 10, 5);
g.setAdapter(Wordadapter);
g.setNumColumns(Length);

そして、私はこのように色を変えようとします

for(int j = StartPosition; j  <= EndPos; j= j + Length) {
    g = (GridView) findViewById(2);
    g.getChildAt(j).setBackgroundColor(Color.BLUE);
}

for ループ内の行は、null ポインターをスローします。g で子を確認すると、配列に 121 個の要素があるにもかかわらず、すべての子 (12) が null です。

開始位置は 21、終了位置は 109、長さは 15 であるため、値に問題があったとしても、最初の反復で壊れることはありません。

何か案は?

追加コード:

AlertDialog.Builder aBuilder = new AlertDialog.Builder(this);

// set title
aBuilder.setTitle("The solution");

GridView g = new GridView(this);

final ArrayAdapter<String> Wordadapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.style,WordSearch);

String[] slag = WordSearch;
g.setId(1);
g.setBackgroundColor(getResources().getColor(android.R.color.black));
g.setHorizontalSpacing(-20);
g.setPadding(60,5, 10, 5);
g.setAdapter(Wordadapter);
g.setNumColumns(Length);

for(int i =0; i < Directions.length;i++) {
    int EndPos;
    int StartPosition = StartPos[i];
    int Direction = Directions[i];
    int Word = wordLengths[i];

    EndPos =  GetEndPosition(Direction,Word,StartPosition);

    int difference = StartPosition - EndPos;

    if ( Direction == 1)// direction down (1) {
        difference = difference  * -1;

        if( difference % Length == 0) {
            for(int j = StartPosition; j  <= EndPos; j= j + Length) {
                g = (GridView) Puzzle_Activity.this.findViewById(2);
                g.getChildAt(j).setBackgroundColor(Color.BLUE);
            }
        }
    }
}
4

1 に答える 1