Android layout Android GridView为空

Android layout Android GridView为空,android-layout,android-widget,Android Layout,Android Widget,我希望有一点'比幸运,并找到一个人谁可以帮助我 让我解释一下我的想法,我在屏幕的左侧和右侧都有一个字符串列表一个图标列表,允许您对左侧的字符串执行各种操作 这是关于我需要的想法。 我想到了各种解决方案,我认为这是一个更接近我所做的网格,所有这些都是一个问题。。。优化字符串列表,调用GridView。。。我没有在屏幕上打印任何东西,但屏幕仍然是空的 enter code public class TabelleActivity extends Activity { /** Called when

我希望有一点'比幸运,并找到一个人谁可以帮助我

让我解释一下我的想法,我在屏幕的左侧和右侧都有一个字符串列表一个图标列表,允许您对左侧的字符串执行各种操作

这是关于我需要的想法。 我想到了各种解决方案,我认为这是一个更接近我所做的网格,所有这些都是一个问题。。。优化字符串列表,调用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); 
  }
输入代码公共类选项卡活动扩展活动{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.testo);
GridView选项卡=新的GridView(本);
塔贝拉.setNumColumns(2);
String[]cols=getResources().getStringArray(R.array.countries\u数组);
ArrayAdapter=新的ArrayAdapter(this,R.layout.main,cols);
tabella.setAdapter(适配器);
}

感谢您的耐心

首先,您从未将GridView添加到屏幕上显示的视图中。为此,您必须调用方法。 例如,您可以为基础布局提供一个ID,并执行以下操作:

// get the base Layout
LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout);
// add the GridView to it
mainLayout.addView(tabella);
然而,在测试之后,我发现了一个非法的例外情况,例如:

02-22 09:15:13.140: E/AndroidRuntime(1634): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
解释如下:

由任意对象数组支持的具体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);
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout main布局=(LinearLayout)findViewById(R.id.main\U布局);
GridView选项卡=新的GridView(本);
塔贝拉.setNumColumns(2);
字符串cols[]=getResources().getStringArray(R.array.countries_数组);
ArrayAdapter=新的ArrayAdapter(this,R.layout.item,R.id.item_title,cols);
tabella.setAdapter(适配器);
mainLayout.addView(tabella);
}
我得到了预期的行为,显示了GridView。需要一些调整以满足您的需要