第十九章:集合视图(三)

简介:

使用ListView渲染数据

让我们转到ListView,它是显示项目集合的主要视图,通常是相同类型的。 ListView始终在垂直列表中显示项目,并在必要时实现滚动。
ListView是唯一派生自ItemsView 的类,但是从该类继承它最重要的属性:IEnumerable类型的ItemsSource。对于该属性,程序设置可枚举的数据集合,并且它可以是任何类型的数据。因此,ListView是Model-View-ViewModel架构模式的View部分的主干之一。
ListView还支持单项选择。 ListView突出显示所选项目并使其可用作SelectedItem属性。请注意,此属性名为SelectedItem而不是SelectedIndex。该属性是object类型。如果ListView中当前未选择任何项,则该属性为null。当所选项更改时,ListView会触发ItemSelected事件,但通常您将使用与SelectedItem属性相关的数据绑定。
ListView定义了比Xamarin.Forms中的任何其他单个视图更多的属性。 本章的讨论从最重要的属性开始,然后逐步涵盖更隐蔽和不太常见的属性。
收藏和选择
ListViewList程序定义了一个显示17个Xamarin.Forms颜色值的ListView。 XAML文件实例化ListView,但将初始化留给代码隐藏文件:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="ListViewList.ListViewListPage">
    <ContentPage.Padding>
        <OnPlatform x:TypeArguments="Thickness"
                    iOS="10, 20, 10, 0"
                    Android="10, 0"
                    WinPhone="10, 0" />
    </ContentPage.Padding>
    <ListView x:Name="listView" />
 
</ContentPage>

此XAML文件的大部分用于设置Padding,以便ListView不会扩展到屏幕的左右边缘。 在某些情况下,您可能希望根据预期的最宽项目的宽度为ListView设置显式WidthRequest。
ListView的ItemsSource属性是IEnumerable类型,由数组和List类实现的接口,但默认情况下该属性为null。 与Picker不同,ListView不提供自己的集合对象。 那是你的责任。 ListViewList的代码隐藏文件将ItemsSource属性设置为使用Color值初始化的List 实例:

public partial class ListViewListPage : ContentPage
{
    public ListViewListPage()
    {
        InitializeComponent();
        listView.ItemsSource = new List<Color>
        {
            Color.Aqua, Color.Black, Color.Blue, Color.Fuchsia, 
            Color.Gray, Color.Green, Color.Lime, Color.Maroon,
            Color.Navy, Color.Olive, Color.Pink, Color.Purple, 
            Color.Red, Color.Silver, Color.Teal, Color.White, Color.Yellow 
        };
    }
}

当您运行此程序时,您会发现可以滚动项目并通过点击它来选择一个项目。 这些屏幕截图显示了如何在三个平台上突出显示所选项目:

201810201330180415
点击项目还会导致ListView同时触发ItemTapped和ItemSelected事件。 如果再次点击同一项,则会再次触发ItemTapped事件,但不会触发ItemSelected事件。 仅当SelectedItem属性更改时才会触发ItemSelected事件。
当然,这些物品本身并不是很吸引人。 默认情况下,ListView通过调用项目的ToString方法显示每个项目,这就是您在此ListView中看到的内容。 但请不要担心:本章中关于ListView的大部分讨论都集中在使项目看起来完全符合您的要求!

目录
相关文章
|
前端开发 算法
如何玩转新技术栈!高德大前端演进历程
高德技术开放日已经顺利落幕,我们准备了精彩的视频回放。这次放出的是由高德工程技术中心 郭忍东 为大家带来的《如何玩转新技术栈!高德大前端演进历程》。
1157 0
如何玩转新技术栈!高德大前端演进历程
|
3月前
|
算法 数据挖掘 BI
拼多多 API 接口:解锁电商世界的无限可能
拼多多API接口是商家高效运营的利器,支持商品信息同步、订单自动化管理、营销活动对接及数据决策分析。通过API,可实现多平台信息互通、提升运营效率30%、降低错误率20%,助力销量增长50%。掌握API,赢在电商竞争起跑线。
373 5
|
4月前
|
缓存 供应链 监控
1688item_search_factory - 按关键字搜索工厂数据接口深度分析及 Python 实现
item_search_factory接口专为B2B电商供应链优化设计,支持通过关键词精准检索工厂信息,涵盖资质、产能、地理位置等核心数据,助力企业高效开发货源、分析产业集群与评估供应商。
|
5月前
|
人工智能 自然语言处理 安全
如何让 AI 工具更懂你,更听话?
你是否也曾被AI“气到吐血”?明明说的是A,AI却给了B?别沮丧,2025年的AI也需要“正确沟通”。本文教你五大提示技巧:动态提示、多模态输入、Few-shot示例、任务分解与安全边界,让AI从“人工智障”变身“贴心助手”。学会“说AI的语言”,释放创造力,提升效率,开启智能生活新时代!
1426 0
|
9月前
|
人工智能 运维 监控
从大规模恶意攻击 DeepSeek 事件看 AI 创新隐忧:安全可观测体系建设刻不容缓
本文探讨了中国大模型DeepSeek在全球范围内的成功及其面临的网络安全挑战。DeepSeek以低成本、高性能的特点迅速走红,甚至超越ChatGPT,但同时也遭受了大规模恶意攻击,如DDoS和密码暴力破解。文章分析了这些攻击对AI行业的影响,并提出通过阿里云构建安全可观测体系的解决方案,包括流量监控、日志审计与异常检测等,为AI技术的安全发展提供保障。
341 0
|
12月前
|
机器学习/深度学习 人工智能 并行计算
Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈
Titans 是谷歌推出的新型神经网络架构,通过神经长期记忆模块突破 Transformer 在处理长序列数据时的瓶颈,支持并行计算,显著提升训练效率。
468 5
Titans:谷歌新型神经记忆架构,突破 Transformer 长序列处理的瓶颈
|
JSON 缓存 前端开发
HarmonyOS NEXT 5.0鸿蒙开发一套影院APP(附带源码)
本项目基于HarmonyOS NEXT 5.0开发了一款影院应用程序,主要实现了电影和影院信息的展示功能。应用包括首页、电影列表、影院列表等模块。首页包含轮播图与正在热映及即将上映的电影切换显示;电影列表模块通过API获取电影数据并以网格形式展示,用户可以查看电影详情;影院列表则允许用户选择城市后查看对应影院信息,并支持城市选择弹窗。此外,项目中还集成了Axios用于网络请求,并进行了二次封装以简化接口调用流程,同时添加了请求和响应拦截器来处理通用逻辑。整体代码结构清晰,使用了组件化开发方式,便于维护和扩展。 该简介概括了提供的内容,但请注意实际开发中还需考虑UI优化、性能提升等方面的工作。
451 11
|
人工智能 算法 自动驾驶
新视角设计下一代时序基础模型,Salesforce推出Moirai-MoE
**Moirai-MoE:时间序列预测的新突破** Salesforce Research团队提出了Moirai-MoE模型,通过稀疏混合专家(MoE)技术,解决了传统时间序列预测方法中存在的频率不可靠和非平稳性问题。该模型在39个数据集上的实验结果表明,其性能优于现有基础模型,具有更高的创新性和泛化能力。论文地址:https://arxiv.org/abs/2410.10469
428 4
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
机器学习/深度学习 数据采集 人工智能
深度学习的魔法:用神经网络识别手写数字
本文将引导读者了解如何使用深度学习技术,特别是卷积神经网络(CNN)来识别手写数字。我们将从基础理论出发,逐步深入到实际操作,包括数据的预处理、模型的构建和训练,以及结果的评估。通过本文,读者不仅能掌握使用深度学习进行图像识别的技能,还能理解其背后的原理。让我们一同揭开深度学习的神秘面纱,探索其在图像处理领域的无限可能。