Пользовательский элемент списка для ListView Android - PullRequest
6 голосов
/ 19 декабря 2011

Я играл с учебным пособием по списку здесь:

http://developer.android.com/resources/tutorials/views/hello-listview.html

, которое говорит вам, чтобы начать расширять список активности.

by public class Main extends ListActivity {

Который основан на накачке макета только для просмотра текста.

   <?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

Если я хочу больше настроить макет, добавив изображения и дополнительный линейный макет над списком адаптеров и т. Д., Возможно ли использовать этот метод, если да, то как мне это сделать?

1 Ответ

15 голосов
/ 19 декабря 2011

Это возможно с помощью SimpleAdapter.

Вот пример:

    // Create the item mapping
    String[] from = new String[] { "title", "description" };
    int[] to = new int[] { R.id.title, R.id.description };

Теперь «заголовок» сопоставлен с R.id.title,и "описание" в R.id.description (определено в XML ниже).

    // Add some rows
    List<HashMap<String, Object>> fillMaps = new ArrayList<HashMap<String, Object>>();

    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("title", "First title"); // This will be shown in R.id.title
    map.put("description", "description 1"); // And this in R.id.description
    fillMaps.add(map);

    map = new HashMap<String, Object>();
    map.put("title", "Second title");
    map.put("description", "description 2");
    fillMaps.add(map);

    SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.row, from, to);
    setListAdapter(adapter);

Это соответствующий макет XML, здесь названный row.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium" />
    <TextView
        android:id="@+id/description"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>

Я использовал дваTextViews, но он работает так же с любым видом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...