我希望有一点'幸运,找到能帮助我的人......
让我解释一下我的想法,我在屏幕的左侧和右侧有一个字符串列表,一个图标列表,允许您对左侧的字符串执行各种操作
这是关于我需要的想法。 我想到了各种解决方案,我认为这是一个更接近我所做的网格,所有ha问题...优化字符串列表,调用GridView ...我不在屏幕上打印任何东西,但是屏幕仍然完全空了......
enter code public class TabelleActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testo);
GridView tabella = new GridView (this);
tabella.setNumColumns(2);
String[] cols = getResources().getStringArray(R.array.countries_array);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.main, cols);
tabella.setAdapter(adapter);
}
感谢您的耐心
答案 0 :(得分:0)
首先,您永远不会将GridView添加到屏幕上显示的视图中。为此,您必须调用ViewGroup.addView(View)方法。 例如,您可以为基本布局提供ID,并执行以下操作:
// get the base Layout
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout);
// add the GridView to it
mainLayout.addView(tabella);
然而,在测试之后,我达到了IllegalStateException,例如:
02-22 09:15:13.140: E/AndroidRuntime(1634): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
official documentation of ArrayAdapter:
给出了解释由任意对象数组支持的具体BaseAdapter。默认情况下,此类期望提供的资源ID引用单个TextView。如果要使用更复杂的布局,请使用也带有字段ID的构造函数。该字段id应引用较大布局资源中的TextView。
所以,我需要一个新的资源文件来定义项目(item.xml)。就像:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="5dp" >
<TextView
android:id="@+id/item_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
最后,我只需要在GridView的ArrayAdapter中使用它:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout);
GridView tabella = new GridView(this);
tabella.setNumColumns(2);
String cols[] = getResources().getStringArray(R.array.countries_array);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.item, R.id.item_title, cols);
tabella.setAdapter(adapter);
mainLayout.addView(tabella);
}
我得到了预期的行为,显示了GridView。需要一些调整以满足您的需求。