Элементы составного списка в ListView в Android

Я пытаюсь определить элемент составного списка в Android ListView, но он кажется слишком сложным. (Под этим я подразумеваю, где я составляю каждый элемент в списке из нескольких представлений/элементов управления)

В Xaml это очень просто и понятно. Да, я знаю, к сожалению, Android не поддерживает привязку, но я ищу лучший способ сделать это в Android.

Пример XAML:

<ListBox ItemsSource="{Binding Days}" x:Name="DataList">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding DateString}" x:Name="DateBox" />
                <TextBlock Text="{Binding Name}" x:Name="NameBox"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Если вы знаете Xaml, то нет другого кода, который заставит привязку работать, кроме установки виртуальной машины в качестве DataContext и предоставления связанных элементов в качестве общедоступных свойств.

Насколько я могу судить, есть много работы, чтобы сделать это в Android. Мне нужно создать пользовательский ListAdapter, множество проводок и переопределений и т. д. Есть ли лучший способ сделать это?

Может кто-нибудь указать мне на документы/учебник, который демонстрирует лучшие практики для решения этой проблемы в Android.

Спасибо!


person IUnknown    schedule 24.01.2012    source источник


Ответы (1)


В этом случае да, нужно написать больше кода, чем если бы вы сделали это в WPF. Эквивалентом определения DataTemplate для ItemsControl в WPF является создание пользовательского адаптера и реализация метода getView.

Видео World of ListView необходимо посмотреть, чтобы понять передовой опыт работы с адаптерами.

http://www.youtube.com/watch?v=wDBM6wVEO70

person Rich    schedule 24.01.2012
comment
Спасибо, отличное видео - я скучаю по XAML. - person IUnknown; 25.01.2012
comment
Мне тоже нравится XAML, но мне кажется, что сообщество WPF зашло слишком далеко, считая, что все просто работает. Я использую MVVM, привязки, инъекцию зависимостей, локатор сервисов, ORM и т. д., и т. д., и это доходит до того, что вы понятия не имеете, где находятся ваши реализации, когда вам нужно отследить ошибку. Я считаю, что Android является облегчением по этой причине, вы снова пишете код вместо того, чтобы обманывать фреймворки привязки, заставляя ваш пользовательский интерфейс работать вручную. - person Rich; 25.01.2012
comment
@Rich, можно ли использовать подобное решение для отображения составных элементов в диалоговом окне предупреждений? заранее спасибо - Омер - person omer schleifer; 10.06.2013
comment
@omerschleifer Для пользовательского макета в AlertDialog перейдите по следующим ссылкам. Старый способ (до фрагментов): wing-linux.sourceforge .net/guide/topics/ui/ и новый способ (с использованием фрагментов): developer.android.com/guide/topics/ui/dialogs.html - person Rich; 10.06.2013