我是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
答案 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);
}