如何设置一个简单的适配器到listview?

时间:2012-04-11 04:22:47

标签: android android-listview simpleadapter

我有问题将arraylist添加到列表视图,这里将解释我的问题..告诉我这里有什么问题...我有三个线性布局,并且在中间布局我有列表视图,如xml所示文件如下..     `      

 <LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="0.59"
        android:src="@drawable/x_title" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout_grouplist"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.09"
    android:orientation="vertical"
    android:weightSum="1" >

    <ListView
        android:id="@+id/listview_grouplist"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" >
    </ListView>

</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.39"
        android:text="TextView" />

    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
  </LinearLayout>
</LinearLayout>`

当我尝试使用数组适配器将项添加到列表时,它对我来说工作正常..但它不适用于List Adapter。它崩溃了。

ListAdapter adapter = new SimpleAdapter(this,
      mylist, 
      R.layout.grouplistlayout, 
      new String[] { "Group Name" }, 
      new int[] { R.id.listview_grouplist });

String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
      "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
      "Linux", "OS/2" };

ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
lst_projlist.setAdapter(adapter1);

有人可以告诉我这里缺少什么吗?

4 个答案:

答案 0 :(得分:5)

你的问题在这里:

    R.layout.grouplistlayout,
    new int[] { R.id.listview_grouplist }); 

最上面一个应该指向列表布局,例如android.R.layout.simple_list_item_1 底部应该指向TextView,而不是列表视图。

另外,我没有看到你将适配器绑定到listview的位置。

来自SimpleAdapter docs

public SimpleAdapter(Context context, 
                     List<? extends Map<String, ?>> data, 
                     int resource, 
                     String[] from, 
                     int[] to)
  

自:API Level 1

     

构造

     

参数
  上下文 与此SimpleAdapter关联的视图正在运行的上下文
  数据 地图列表。列表中的每个条目对应于列表中的一行。地图包含每行的数据,并应包括“from”中指定的所有条目   资源 视图布局的资源标识符,用于定义此列表项的视图。布局文件应至少包括“to”中定义的那些命名视图   来自 将添加到与每个项目关联的地图的列名列表。
   应在“from”参数中显示列的视图。这些都应该是TextViews。此列表中的前N个视图将给出from参数中前N列的值。

答案 1 :(得分:1)

如果您使用Activity进行扩展,那么您必须使用setAdapter AND,如果您使用ListActivity进行扩展,那么您应该使用setListAdapter而不需要使用xml文件..

在这里,我认为你正在使用Activity扩展,然后不需要使用setListAdapter ..

答案 2 :(得分:0)

只需替换您的ListView代码。

<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>

这将使您的应用完全运行。

答案 3 :(得分:0)

在下面,检查您传递的参数

ListAdapter adapter = new SimpleAdapter(this,
  mylist, 
  R.layout.grouplistlayout, 
  new String[] { "Group Name" }, 
  new int[] { R.id.listview_grouplist });
  1. myList地图吗?
  2. 您发送的资源参数应该是提供ure项目布局而不是ur list列表的资源。你正在传递尿素列表的资源(假设grouplistlayout是你上面提供的布局)。改变这一点。
  3. 同样,to应包含映射到from参数的资源中提到的文本视图。
  4. 查看offical SimpleAdapter documentation了解详情