Android中ListView中的复合列表项
我试图在 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,那么除了将 VM 设置为 DataContext 并将绑定项公开为公共属性之外,没有任何代码可以使绑定工作。
据我所知,要在 Android 中实现这一点还有很多工作要做。我需要创建一个自定义的 ListAdapter,大量的接线和重写等。有没有更好的方法来做到这一点?
有人可以向我指出文档/教程,其中演示了在 Android 中解决此问题的最佳实践吗?
谢谢!
I am trying to define a composite list item in an Android ListView but it seems to be overly complex. (By this I mean where I compose each item in the listview from multiple views/controls)
In Xaml this is very simple and clean. Yes, I know undfortunately Android does not support binding but I am looking for the best way to accomplish this in Android.
XAML example:
<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>
If you know Xaml, then there is no code to make the binding work other then setting the VM as the DataContext and exposing the bound items as public properties.
As far as I can tell, there is a lot of work to make this happen in Android. I need to create a custom ListAdapter, lots of wiring and overriding, etc. Is there a better way to do this?
Can someone please point me to docs/tutorial that demonstrates the best practices for solving this problem in Android.
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在这种情况下,是的,需要编写的代码比在 WPF 中编写的代码要多。与在 WPF 中的 ItemsControl 上定义 DataTemplate 等效的是创建自定义适配器并实现 getView 方法。
要了解适配器的最佳实践,必须观看“ListView 世界”视频。
http://www.youtube.com/watch?v=wDBM6wVEO70
In this case, yes there's more code to write than if you had done it in WPF. The equivalent of defining a DataTemplate on an ItemsControl in WPF is making a custom Adapter and implementing the getView method.
The World of ListView video is a must watch for understanding best practices with Adapters.
http://www.youtube.com/watch?v=wDBM6wVEO70