2

我是 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
4

3 回答 3

8

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

于 2012-08-28T01:18:29.953 回答
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);

当然,您还需要一个numberClick从 XMLonClick属性调用的方法:

public void onClick(View v) {
    // add your numClickHandler code here
}
于 2012-08-28T01:36:22.000 回答
0

试试这个....

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);
}
于 2012-08-28T05:22:45.007 回答