提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:黄竹雯|2016-03-17 17:28:17.000|阅读 1616 次
概述:在过去的几天里我们已经知道很多关于Android和Xamarin.Android使用技巧。现在让我们来深入了解在Android的列表视图中最常用的视图。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
在过去的几天里我们已经知道很多关于Android和Xamarin.Android使用技巧。现在让我们来深入了解在Android的列表视图中最常用的视图。
几乎每一个应用程序中都有列表视图,但事实上,我让你快速而准确地说出你的手机上没有一些要求(不含游戏)列出数据列表的3款应用的名称,你会发现这并不容易,不是吗?!那么就让我们来仔细学习Android开发的这一部分。
列表视图顾名思义是用来保存排列的可浏览数据列表(或集合)。这些排列可以很简单,也可以如你想要的复杂,每一个排列可以包含任何我们在在本系列的早期博客中讨论的视图组。
每一个列表视图通过一个适配器都有它自己的数据。适配器是一个类,相当于列表视图和列表视图显示的数据之间的胶水。适配器也负责创建和填充列表视图显示的排列信息。我们有多种类型的适配器,比如:
让我们来通过代码看看在Xamarin.Android中一个简单的列表视图是什么样子。首先让我们看看AXML文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="//schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/moviesListView" /> </LinearLayout>
AXML文件很简单,在我们的案例中只是将列表视图添加到父视图组。 让我们来看看活动代码:
using Android.App; using Android.OS; using Android.Widget; namespace AdapterDemo1 { [Activity(Label = "AdapterDemo1", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); var moviesListView = FindViewById<ListView>(Resource.Id.moviesListView); var moviesAdapter = new ArrayAdapter<Movie>(this, Android.Resource.Layout.SimpleListItem1, MoviesRepository.Movies); moviesListView.Adapter = moviesAdapter; } } }
最重要的两个活动代码行
让我们来看看这部电影类和电影库如何捕捉所有代码的类
using System; namespace AdapterDemo1 { public class Movie { public string Title { get; set; } public string Episode { get; set; } public string Director { get; set; } public DateTime ReleaseDate { get; set; } } }
using System; using System.Collections.Generic; namespace AdapterDemo1 { public static class MoviesRepository { public static List<Movie> Movies { get; private set; } static MoviesRepository() { Movies = new List<Movie>(); AddMovies(); } private static void AddMovies() { Movies.Add(new Movie { Title = "A New Hope", Director = "George Lucas", Episode = "IV", ReleaseDate = new DateTime(1977, 05, 25) }); Movies.Add(new Movie { Title = "The Empire Strikes Back", Director = "George Lucas", Episode = "V", ReleaseDate = new DateTime(1980, 05, 17) }); Movies.Add(new Movie { Title = "Return of the Jedi", Director = "George Lucas", Episode = "VI", ReleaseDate = new DateTime(1983, 05, 25) }); Movies.Add(new Movie { Title = "The Phantom Menace", Director = "George Lucas", Episode = "I", ReleaseDate = new DateTime(1999, 05, 19) }); Movies.Add(new Movie { Title = "Revenge of the Sith", Director = "George Lucas", Episode = "III", ReleaseDate = new DateTime(2005, 05, 19) }); Movies.Add(new Movie { Title = "The Force Awakens", Director = "J.J. Abrams", Episode = "VII", ReleaseDate = new DateTime(2015, 12, 11) }); } } }
这是很直观.NET,我们有一个POCO对象和一个库模式的Demo-Need实现。
让我们运行这个应用程序,看看它的样子:
嗯,我没有看到任何电影信息而只是看到了电影类的名称空间。这是为什么呢?原因很简单,正如我上面提到的,ArrayAdapter的显示是通过在其处理的对象上简单地调用.ToString()。让我们尝试为电影对象和更好的显示来进行覆盖。
using System; namespace AdapterDemo1 { public class Movie { public string Title { get; set; } public string Episode { get; set; } public string Director { get; set; } public DateTime ReleaseDate { get; set; } public override string ToString() { return "Episode " + Episode + " " + Title + " by " + Director; } } }
现在这样我更喜欢。是的,我们这些急切的《星球大战》的粉丝门,我也在列表中收藏了第七集。
现在让我们看看当一个条目被点击时,我们如何检测。
只要点击一个条目,列表视图就会暴露一个事件处理程序,来注册到订阅ItemClick事件处理程序的事件
moviesListView.ItemClick += moviesListView_ItemClick;
void moviesListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e) { Toast.MakeText(this, MoviesRepository.Movies[e.Position].ToString(), ToastLength.Long).Show(); }
关键在于ItemClickEventArgs类的一个“位置”属性,它是用来识别哪一行被点击的。不要担心Toasts代码,我们将在下一篇博客中详细讲到。
所以如果我们运行这个应用程序,我们应该看到类似于以下的画面:
就这样,项目点击的一个简单的toast显示细节。现在,当一个项目被点击时我们能做什么的可能性是无止境的,我只是碰巧选择了最简单的方式来展示我们能做些什么。
今天就到这里,明天让我们挖掘更多关于如何控制ListView适配器和布局的知识。
Xamarin正式被Microsoft收购,慧都将为您提供更好的解决方案和服务!详情请<>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:慧都控件网本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
用C#开发iOS、Android和Windows Phone原生应用程序,一次开发,多平台交付
Xamarin Studio跨平台移动开发(IDE)利器
Xamarin Test Cloud加速移动开发的云端测试利器
Xamarin for Visual Studio用Visual Studio开发原生 iOS, Android 和Windows应用程序
Xamarin.Forms通过一个共享的C#代码库创建iOS,Android和Windows Phone原生UI
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢