使用不同的对象/项目填充listview

使用不同的对象/项目填充listview,listview,nativescript,Listview,Nativescript,在Nativescript Listview中,是否可以使用多种类型的对象填充Listview?每个对象都有自己的单独布局 如果不在内置ListView中,那么telerik RadListView如何?这样可以吗?目前我认为没有一种明确的内置方式来处理不同的模板,例如ListView和RadListView中都没有分组(RadListView中仍在考虑此功能)。你可以尝试自己去实现它,但它不会很好。你可以这样做: <lv:RadListView items="{{ dataItems }

在Nativescript Listview中,是否可以使用多种类型的对象填充Listview?每个对象都有自己的单独布局


如果不在内置ListView中,那么telerik RadListView如何?这样可以吗?

目前我认为没有一种明确的内置方式来处理不同的模板,例如ListView和RadListView中都没有分组(RadListView中仍在考虑此功能)。你可以尝试自己去实现它,但它不会很好。你可以这样做:

<lv:RadListView items="{{ dataItems }}" itemTemplateSelector="{{ templateSelector }}">

    <lv:RadListView.itemTemplates>
        <template key="template1">
            <StackLayout orientation="vertical">
                ...
            </StackLayout>
        </template>
        <template key="template2">
            <StackLayout orientation="horizontal">
                ...
            </StackLayout>
        </template>
    </lv:RadListView.itemTemplates>

</lv:RadListView>
  • 创建表示“项目”的“业务数据”对象,并创建一个指示器属性,该属性将显示应使用的视觉(模板)
  • 然后在ListView或RadListView中声明模板,其中包含X个不同的“布局”,其中一个将被隐藏(通过其可见性)
  • 根据“业务数据”对象的属性,切换自定义模板X布局的可见性

这是如何继续实现这种“多个不同模板”的基本思想,当然还有其他方法可以使用。在旁注中,确保最初所有布局都是“隐藏”的,以实现最佳性能。

RadListView现在提供了多个项目模板的功能。看

看起来像这样:

<lv:RadListView items="{{ dataItems }}" itemTemplateSelector="{{ templateSelector }}">

    <lv:RadListView.itemTemplates>
        <template key="template1">
            <StackLayout orientation="vertical">
                ...
            </StackLayout>
        </template>
        <template key="template2">
            <StackLayout orientation="horizontal">
                ...
            </StackLayout>
        </template>
    </lv:RadListView.itemTemplates>

</lv:RadListView>

...
...