-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。你在一个空对象上调用 setBackgroundResource() 方法,首先用一些值初始化shelfRow,然后在对象上调用一个方法。

于 2012-10-27T11:55:08.417 回答
1

您需要动态创建图像视图。

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 回答