Раздувание 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.