基本的に、アラート ダイアログで作成された 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);
}
}
}
}