添加视图不受支持

时间:2012-08-28 01:13:15

标签: android button

我是Android编程的新手,我遇到了一个问题。这是代码片段

nums = (GridView) findViewById(R.id.nums);
for(int i=0; i < 10; i++) {
    Button b = new Button(this);
    b.setText(i+"");
    b.setTextSize(15);
    b.setTextColor(Color.CYAN);
    b.setOnClickListener(numsClickHandler);
    nums.addView(b, 20, 20);
}

问题发生在nums.addView(b, 20, 20);

caused by: java.lang.unsupportedoperationexception: addView(View, int, layoutparams) is    
not supported in adapterview

3 个答案:

答案 0 :(得分:8)

错误消息是清除的,GridView是一个不允许直接向其添加视图的AdapterView,而是像ListView那样需要为其提供适配器,并在适配器中提供视图。 GridView教程可能有所帮助。

答案 1 :(得分:0)

首先,让我们用:

创建一个布局调用grid_item.xml
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="numberClick"
    android:textColor="@color/cyan"
    android:textSize="15sp" />

(以及您想要的任何其他属性)

接下来,要使用此布局在网格中添加新项目,即Adapter.add():

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.grid_item, new ArrayList<String>());
for(int i = 0; i < 10; i++)
    adapter.add(String.valueOf(i));
grid.setAdapter(adapter);

当然,您还需要XML numberClick属性中名为onClick的方法:

public void onClick(View v) {
    // add your numClickHandler code here
}

答案 2 :(得分:-1)

试试这个......

nums = (GridView) findViewById(R.id.nums);
for(int i=0; i < 10; i++) {
    Button b = new Button(this);
   -->** b.setLayoutParams(new GridView.LayoutParams(100, 100));**
    b.setText(i+"");
    b.setTextSize(15);
    b.setTextColor(Color.CYAN);
    b.setOnClickListener(numsClickHandler);
    nums.addView(b);
}