Как установить простой адаптер в 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.
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 });
- is
myList
карта? - параметр ресурса, который отправляет u r, должен быть ресурсом, который предоставляет макет элемента ure, а не списка ure. вы передаете ресурс списка ure (предполагая, что grouplistlayout-это макет, который вы предоставили выше). изменить это.
- аналогично
to
должен содержать textviews, упомянутые в ресурсе, сопоставленном сfrom
параметр.
Регистрация официальная документация SimpleAdapter дополнительные детали