在集合视图中对不同类型的项目进行分组和显示 – Xamarin Forms

我想做一个日记类型的gui,其中的条目是按日期排序的,我想从数据库中获取我的日记条目,并将同一天添加的条目进行分组,然后用标签将这些分组分开,有点像facebook messenger的聊天记录。

这就是我所想的。

    <ScrollView>
        <CollectionView ItemsSource="{Binding JournalEntries}" SelectionMode="None">
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <Label>Date</Label>
                    <CollectionView ItemsSource="{Binding}">

                    </CollectionView>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>
    </ScrollView>

问题是 “JournalEntry “对象可以有很多类型,比如 “Photo “就是从 “JournalEntry “衍生出来的。所以如果’JournalEntryries’集合里有一个’Photo’对象,我希望显示的是图片而不是’ToString()’文本。

  1. 什么是最好的方式来将JournalEntries分成不同的日子,这样我就可以在组上显示一个标签?

  2. 我如何在运行时决定一个对象应该显示为图像还是文本?

希望得到任何帮助。

解决方案:

以下是答案:-

  1. 你可以使用 JournalEntries.GroupBy(x=> x.date).ToDictionary(). 为此,你必须使用System.Ling.Ling函数。这将返回一个Dictionary,其Key将是Date,所有的条目在Value中以List的形式出现。这将使你更容易使用。

  2. 你可以在运行时使用DataTemplateSelector或转换器来选择一个选项。使用DataTemplateSelector,你必须为图像和文本分别制作两个DataTemplate。对于转换器,你必须根据来自ServerDatabase的数据来切换可见性。

如果有进一步的疑问,请告诉我。我可以帮你解决这个问题

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何在Flutter中动态传递IconData?

2022-9-8 19:37:22

未分类

一个corda节点没有运行

2022-9-8 19:48:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索