使用适配器将LinearLayout添加到ListView

时间:2014-02-27 03:05:46

标签: android listview android-listview

我正在尝试创建ListView,其中列表中的每个条目都包含LinearLayout。我有一个我在此定义的ArrayList

ArrayList<LinearLayout> menuList;

稍后在我的代码中,我定义了

LinearLayout dailyMenuLayout = new LinearLayout(ReturnMenus.this);,每次我完成要添加到ListView的布局时,我都会使用menuList.add(DailyMenuList)

我一直尝试使用的适配器如下 - 但每次触发它时都会崩溃应用程序。

ListView myListView = (ListView)findViewById(android.R.id.list); ArrayAdapter<LinearLayout> adapter = new ArrayAdapter<LinearLayout>(ReturnMenus.this, R.id.linear_layout_item, menuList); myListView.setAdapter(adapter);

这是ListView中单行的XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/linear_layout_item"
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="wrap_content" >
    </LinearLayout>

</LinearLayout>

有人可以告诉我如何做到这一点吗?感谢。

2 个答案:

答案 0 :(得分:0)

您应该将数据绑定到适配器,例如字符串,而不是布局。

要了解如何使用ListView和Adapter,请查看 your-android-sdk-dir \ samples \ android-XX \ ApiDemos 中的演示项目。

答案 1 :(得分:0)

对列表中的行布局使用类似以下布局的内容,而不是当前布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView 
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

     <TextView 
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

      <TextView 
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
      .
      .
      .
      .
      .

    </LinearLayout>

如果您不确切知道要使用多少textView,请使用在应用程序中使用的最大TextView数。然后在getView()里面的适配器类中,你可以得到那些TextView。如果某些行不会使用所有这些textViews,那么将它们设置为不可见,如下所示:

TextView txtView3 = (TextView)findViewById(R.id.text3);
txtView3.setVisibility(View.GONE)

以下教程可帮助您创建listView。 http://www.vogella.com/tutorials/AndroidListView/article.html