读书频道 > 软件开发 > C# > C#开发Android应用实战——使用Mono for Android和.NET/C#
6.3.4 处理ListView事件
2012-12-26 11:03:43     我来说两句 
收藏    我要投稿   
《C#开发Android应用实战——使用Mono for Android和.NET/C# 全面透彻地讲解Android应用编程知识,分析如何结合使用C#和Mono来编写在Android设备系列上运行的应用程序。在这本由多位专家联袂撰写的必备精品书...  立即去当当网订购

如果用户不能和ListView进行交互,那么它将没有任何用处。ListView自动提供滚动功能,并且知道什么时候请求列表适配器以显示合适项。甚至只需在适配器中实现很少一点的内容,ListView就可以自动回收布局。幸运的是,ListView为各种类型的交互公开了许多事件:

ItemClick:每当用户点击列表项目一次都会触发该事件。该事件要求用户触摸列表项,然后抬起手指,但在短时间内仍然处在列表项的范围内。在某些设备上,当单击Enter按钮时也会触发该事件。

ItemLongClick:当用户点击并按住列表项较长一段时间时触发该事件。在某些设备上,当点击并按住Enter按钮时也会触发该事件。

ItemSelected:当选择某一列表项时触发该事件。

ItemCleared:该事件与ItemSelected事件是相反的。当列表项处于不再被选择的状态时触发该事件。

CreateContextMenuEvent:当较长时间单击列表项时触发该事件。这是知道什么时候显示上下文菜单的最简便方法,而不必在ItemLongClick事件中编写相关代码。

Touch:这是一个低级别的触控事件,可以使用该事件探测更复杂的触控。

Recycler:每当某一列表项的视图被回收时,该视图的实例将触发该事件。

对这些事件的响应与对其他.NET事件的响应之间并没有什么不同,只是在Visual Studio中没有针对连接事件的设计时支持。还可以连接事件的委托,当触发事件时执行相关代码。与任何其他的.NET事件一样,你也可以使用匿名委托方法或者lambda表达式以便生成一些干净的内联代码。程序清单6-22显示了一些连接ListView事件以便完成简单工作的示例。

程序清单6-22  处理ListView事件
using System;
using Android.App;
using Android.OS;
using Android.Widget;
using Android.Views;
namespace Lists03
{
   [Activity(Label = "Events List"), Mainlauncher=true)]
   public class EventsListActivity : ListActivity
   {
       private string[] items;

       protected override void OnCreate(Bundle bundle)
       {
           base.OnCreate(bundle);
           items = new string[] {"Item 1", "Item 2", "Item 3"};
           this.ListAdapter = new ArrayAdapter<string>(this,
               Android.Resource.Layout.SimpleListItem1, items);
           //Using an EventHandler
           this.ListView.ItemClick += new EventHandler<ItemEventArgs>(
               ListView_ItemClick);
           //Using an Anonymous Method
           this.ListView.ItemLongClick += delegate(object sender,
               Android.Widget.AdapterView.ItemLongClickEventArgs e)
           {
               Toast.MakeText(this,
                   "Long Click: " +
                   items[e.Position],
                       ToastLength.Short).Show();
           };
           //Using a Lambda Expression
           this.ListView.Recycler += (object sender,
                             AbsListView.RecyclerEventArgs e) =>
           {
               Toast.MakeText(this, "Recycler!",
                   ToastLength.Short).Show();
           };
       }
       void ListView_ItemClick(object sender, ItemEventArgs e)
       {
           Toast.MakeText(this, "Click: " + items[e.Position],
               ToastLength.Short).Show();
       }
   }
}
Lists03\EventsListActivity.cs

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:6.3.3 使用自定义列表适配器来自定义ListView
下一篇:6.3.5 首选项屏幕
相关文章
图文推荐
2.2.3 对程序进行调
2.2.2 编译和运行程
2.2.1 创建控制台项
2.1 开发环境的搭建
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站