Раздувание ListView с разным количеством ImageViews в каждой строке

Я начинаю работать с Android LayoutInflater, и мне нужна помощь.

У меня есть ListActivity, которая использует макет, определенный в следующем XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
    <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
</LinearLayout>

Этот ListView заполнен ArrayAdapter, который генерирует каждую строку, надувая другой XML, как это:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:padding="6dip"
    >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="fill_parent"
        >
        <TextView
            android:id="@+id/item_text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:textSize="20dip"
            android:textColor="#FFF"
        />
        <ImageView
            android:id="@+id/item_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_marginRight="6dip"
            android:src="@drawable/example_icon"
        />
    </LinearLayout>
</LinearLayout>

Это работает нормально, но теперь я хочу показать переменное количество значков для каждого элемента (поэтому каждая строка ListView может иметь различное количество ImageViews в TextView).

Может быть, мне нужно определить другой XML для списка значков и каким-то образом построить ListView из вложенных макетов? Я не знаю, как лучше это сделать. Какие-либо предложения?

Спасибо!

Редактировать: это пример того, что я пытаюсь сделать: http://tinypic.com/r/2s9yniw/7

2 ответа

Решение

Вам просто нужно будет включить несколько изображений в макет XML для каждой строки и установить их видимость на GONE когда они вам больше не нужны (вы можете поместить изображение в один файл макета XML, а затем include это 3 раза в вашем файле макета строки).

Вы могли бы сделать это, надувая XML-файл макета изображения столько раз, сколько вам нужно для каждой строки, а затем добавляя его в представление строк (но это создает проблемы с утилизацией, если вы добавили только 2 изображения в первый раз и в следующую строку). необходимо 3); но из того, что я помню, вы не можете добавить раздутый контент в строку Адаптера, или вы получите исключение (не совсем уверен, поэтому попробуйте в случае сомнений).

В определенной строке вы можете поместить изображения под текстовое представление этой строки, и когда вам не нужно их показывать, вы можете скрыть их, установив видимость GONE.

Другие вопросы по тегам