Как установить простой адаптер в listview?

у меня проблема с добавлением 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>`

когда я пытаюсь добавить элементы в список с помощью адаптера массива, он отлично работает для меня..но он не работает для адаптера списка. Он рушится.

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 ответов


ваша проблема здесь:

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

верхний должен указывать на макет списка, например android.R.layout.simple_list_item_1 Нижний должен указывать на TextView, а не на представление списка.

кроме того, я не вижу, где вы привязываете адаптер к listview.

С SimpleAdapter документы:

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

Since: API Level 1

конструктор

параметры
контекст контекст, в котором выполняется представление, связанное с этим SimpleAdapter
сведения список карт. Каждая запись в списке соответствует одной строке в списке. Карты содержат данные для каждой строки и должны включать все записи, указанные в "from"
ресурс идентификатор ресурса макета просмотра это определяет представления для данного элемента списка. Файл макета должен включать, по крайней мере те, именованные виды, определенные в "на"
С список имен столбцов, которые будут добавлены на карту, связанные с каждым элементом.
to представления, которые должны отображать столбец в параметре "from". Все это должно быть TextViews. Первые N представлений в этом списке задаются значениями первых N столбцов в from параметр.


Если вы расширяетесь с активностью, то вы должны использовать setAdapter и если вы расширяетесь с ListActivity, то вы должны использовать setListAdapter и нет необходимости использовать xml-файл..

и здесь я думаю, что вы расширяетесь с активностью, тогда не нужно использовать setListAdapter..


просто замените код ListView.

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

это сделает ваше приложение работать полностью.


в следующем, проверьте параметры, которые вы передаете,

ListAdapter adapter = new SimpleAdapter(this,
  mylist, 
  R.layout.grouplistlayout, 
  new String[] { "Group Name" }, 
  new int[] { R.id.listview_grouplist });
  1. is myList карта?
  2. параметр ресурса, который отправляет u r, должен быть ресурсом, который предоставляет макет элемента ure, а не списка ure. вы передаете ресурс списка ure (предполагая, что grouplistlayout-это макет, который вы предоставили выше). изменить это.
  3. аналогично to должен содержать textviews, упомянутые в ресурсе, сопоставленном с from параметр.

Регистрация официальная документация SimpleAdapter дополнительные детали