-10

動的に作成されたビューの背景色を設定したいのですが、強制終了しました:

item1.setBackgroundColor(android.R.color.black);

以下のコードで:

    for (int i = 0; i < numberOfRows; i++) {
        View shelfRow;
        shelfRow.setBackgroundResource(R.drawable.shelf_row2);
        ImageView item1 = (ImageView) findViewById(R.id.row_item1);
        item1.setBackgroundColor(android.R.color.black);
        parentPanel.addView(shelfRow);
    }

また、setImageDrawableを使用して drawable を設定しても同じ結果が得られました。

4

2 に答える 2

2
View shelfRow;
shelfRow.setBackgroundResource(R.drawable.shelf_row2);

ViewshelfRow はまだ初期化されていないため、値が null であることに注意してください。null オブジェクトで setBackgroundResource() メソッドを呼び出しています。まず、shelfRow を何らかの値で初期化してから、オブジェクトでメソッドを呼び出します。

于 2012-10-27T11:55:08.417 に答える
1

imageview を動的に作成する必要があります。

ImageView images[];
     View shelfRow[] =new View[numberOfRows];
    for (int i = 0; i < numberOfRows; i++) {
        images = new ImageView[numberOfRows];

        shelfRow[i].setBackgroundResource(R.drawable.shelf_row2);
        images[i].setBackgroundColor(android.R.color.black);
        parentPanel.addView(shelfRow[i]);
    }

または、10 個のイメージビューを作成し、ID を次のように指定します。

int[] buttonIDs = new int[] {R.id.button1ID, R.id.button2ID, R.id.button3ID, ... };
              View shelfRow[] =new View[numberOfRows];
    ImageView[] forAdapter = new ImageView[numberOfRows];
    for (int i = 0; i < numberOfRows; i++) {
        forAdapter[i] = (ImageView) findViewById(buttonIDs[i]);

        shelfRow[i].setBackgroundResource(R.drawable.shelf_row2);
        forAdapter[i].setBackgroundColor(android.R.color.black);
        parentPanel.addView(shelfRow[i]);
    }
于 2012-10-27T11:58:42.830 に答える