Android: я должен использовать ListView? (case: список элементов с частично неизвестной структурой) - PullRequest
0 голосов
/ 30 декабря 2011

Предположения о списке (обновлено):

  • Он будет не содержать более 10 элементов списка (элементы списка определяются макетом xml ниже).
  • Высота каждого элемента неизвестна, поскольку элемент списка содержит LinearLayout, который может иметь до 20 дочерних представлений (см. Xml ниже).

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="fill_parent"
    android:orientation:"horizontal">

    <!--
        This LinearLayout is going to contain one or more 
        Views which will be added progammatically on runtime.
        The number of children views added to it depend on the 
        data to be displayed, and the only assumption that can 
        be made is that there's will be no more than 20 child 
        views for one particular instance of this LinearLayout.
    -->
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="25dp"/>

    <ImageButton
        android:layout_width="25dip"
        android:layout_height="25dip"
        android:layout_gravity="center|top"
        android:layout_marginLeft="-25dp"/>
</LinearLayout>

Вопросы:

  • Имеет ли смысл использовать ListView для макета с такой свободой в его структуре (как выше), и все еще в состоянии использовать
    convertView, переданный в ListView#getView(...)?
  • В качестве альтернативы, было бы неправильно помещать все элементы списка во внешний
    LinearLayout и поместить это в ScrollView? Делая это, я бы не получил кеширующие способности ListView, но, возможно, это не было бы так тяжело, учитывая предположения о списке? (см. топ). (есть какие-нибудь указатели о том, как сделать эту альтернативу похожей на ListView? Я думаю о применении стандартных цветов и селекторов и т. Д.)

1 Ответ

1 голос
/ 30 декабря 2011

Если вы знаете, что некоторые из ваших 10 элементов будут одинаковыми, вы можете использовать

getItemViewType (int position)

Чтобы убедиться, что convertView будет соответствоватьваш тип элемента convertView

...