参考文章:http://blog.csdn.net/zhouyuanjing/article/details/8372686

GridView初始化代码:

gridViewStudent = FindViewById<GridView> (Resource.Id.gridViewStudent);
//GridViewAdapter 自定义的Adapter
GridViewAdapter gridAdapter = new GridViewAdapter (this,stu);
//更新图片 使用默认SimpleAdapter,需重写ViewBinder
//adapter.ViewBinder = new ViewBinder ();
gridViewStudent.Adapter = gridAdapter;
//gridView.ChoiceMode = ChoiceMode.MultipleModal;//长按多选多选模式
gridViewStudent.ChoiceMode = ChoiceMode.Multiple;//设置多选模式
//GridMultiChoiceListener自定义监听
gridViewStudent.SetMultiChoiceModeListener (new GridMultiChoiceListener(this));// 设置多选模式监听器
GridViewAdapter 实现:
public class GridViewAdapter:BaseAdapter
{
Context context;
List<Student> data;
//List<int> selected = new List<int>();
public GridViewAdapter(Context c,List<Student> data){
context = c;
this.data = data;
} /*public void SelectedItem(int selected)
{
this.selected.Add (selected);
}*/ public override int Count {
get {
return data.Count;
}
} public override Java.Lang.Object GetItem (int position)
{
return position;
} public override long GetItemId (int position)
{
return position;
} //主要方法
public override View GetView (int position, View convertView, ViewGroup parent)
{
GridItem item; if (convertView == null) {
item = new GridItem (context); item.LayoutParameters = new GridView.LayoutParams (GridView.LayoutParams.WrapContent,
GridView.LayoutParams.WrapContent); } else {
item = convertView as GridItem;
} item.ID.Text = data[position].ID;
item.Name.Text = data [position].Name;
return item; }
}

GetView 为主要操作方法,用来数据显示等。GridItem为自定义类,标识gridview的一个子视图

GridItem 实现;

public class GridItem:RelativeLayout,ICheckable
{
bool _checked; public ImageView HeadImg {
get;
set;
} public ImageView SelectedImg {
get;
set;
} public TextView Name {
get;
set;
}
public TextView ID {
get;
set;
} public GridItem (Context context) : base (context)
{ //从布局文件加载元素
       LayoutInflater.From(context).Inflate(Resource.Layout.gridItem,this);
HeadImg = FindViewById<ImageView>(Resource.Id.imageHead);
SelectedImg = FindViewById<ImageView>(Resource.Id.imageSelect);
Name = FindViewById<TextView> (Resource.Id.textStuName);
ID = FindViewById<TextView> (Resource.Id.textStuID);
}
//进行状态切换
public bool Checked {
get {return _checked; }
set {
_checked = value;
SelectedImg.Visibility=value?ViewStates.Visible:ViewStates.Gone;
SetBackgroundDrawable (value ? Resources.GetDrawable (Resource.Drawable.gridBackground) : null);
}
} public void Toggle ()
{
Checked = !_checked;
}
}
GridMultiChoiceListener类实现
//这里继承一下Java.Lang.Object对象,不然要实现C#IDisposable接口
class GridMultiChoiceListener:Java.Lang.Object, GridView.IMultiChoiceModeListener
{
private Context context; public GridMultiChoiceListener(Context context)
{
this.context = context;
} public void OnItemCheckedStateChanged (ActionMode mode, int position, long id, bool isChecked)
{
//mode.Invalidate ();
} public bool OnActionItemClicked (ActionMode mode, IMenuItem item)
{
return true;
} public bool OnCreateActionMode (ActionMode mode, IMenu menu)
{
return true;
} public void OnDestroyActionMode (ActionMode mode)
{ } public bool OnPrepareActionMode (ActionMode mode, IMenu menu)
{
return true;
} }

Xamarin 实现android gridview 多选的更多相关文章

  1. Xamarin开发Android应用打包apk

    Visual Studio中用Xamarin开发Android应用,生成apk文件有3种方法 1.debug时,代码目录下bin\Debug中会自动生成调试用***-Signed.apk文件,但是文件 ...

  2. 【Xamarin开发 Android 系列 1】环境部署搭建

    原文:[Xamarin开发 Android 系列 1]环境部署搭建 开篇自然先扯一段,近几年移动互联网如果熊猫零食一样,蔓延迅速.楼主身为一个微软忠实的粉丝,无奈,老爹不给力.Silverlight开 ...

  3. Xamarin Studio Android 配置

    原文:Xamarin Studio Android 配置 C#依托于mono平台可以实现Unix平台服务器端开发已经不是什么新鲜事了,而Xarmain公司(初始成员大多来自原Mono.MonoTouc ...

  4. Xamarin C# Android for Visual Studio 平台安装

    原文:Xamarin C# Android for Visual Studio 平台安装 Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:http://xamarin.com/pr ...

  5. C#-Xamarin的Android项目开发(二)——控件应用

    相信我,这不是一篇吐槽文章.... 基础控件 Android的控件和控件样式非常特别,它是一种内联特别高的设计模式,换句话说,它是非常烂的设计.... 但在这种特别的关系里还是有一定的规律的,下面我们 ...

  6. xamarin开发android收集的一些工具

    xamarin开发android收集的一些工具 工欲善其事,必先利其器,从16年下半年开始做xamarin相关的开发,平时使用的一些工具和google插件给大家分享一下,都有下载地址,持续更新. Vi ...

  7. C#-Xamarin的Android项目开发(一)——创建项目

    创建项目 使用Xamarin开发安卓项目,首先需要安装VS2017以上版本.因为VS2017以上的版本,可以直接创建Xamarin项目. 另外用Xamarin开发安卓项目,还需要使用Intel的CPU ...

  8. C#-Xamarin的Android项目开发(三)——发布、部署、打包

    前言 部署,通常的情况下,它其实也是项目开发的一个难点. 为什么这么说呢?因为,它不是代码开发,所以很多开发者本能的拒绝学习它. 并且一个项目配置好一次以后,部署的步骤和部署的人通常很固定,所以大部分 ...

  9. Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结

    最近公司要开发android 所以研究了一下Xamarin  to android 中个GPS 废话不多说,说重点. 想获取手机上的gps信息必不可少的就是要使用 LocationManager Lo ...

随机推荐

  1. MySQL锁系列1

    http://www.cnblogs.com/xpchild/p/3782311.html   MySQL的锁:MySQL内部有很多种类的锁,按照用途不同,可以分为两类:1. 保护内存结构的锁,实现同 ...

  2. 【ZZ】常用推荐算法

    http://liyonghui160com.iteye.com/blog/2082450 在推荐系统简介中,我们给出了推荐系统的一般框架.很明显,推荐方法是整个推荐系统中最核心.最关键的部分,很大程 ...

  3. 基于MTD的NAND驱动开发、K9F1G08 2K page、Yaffs2 Files System

    转载:http://hi.baidu.com/cui1206/item/1d4119e376132513585dd886 基于MTD的NAND驱动(linux-2.6.22.10内核),目前已可以在该 ...

  4. A Brief Introduction to the Design of UBIFS

    http://pan.baidu.com/s/1dDy0jip 译文:http://blog.csdn.net/kickxxx/article/details/6573396 项目闲暇,想了解下UBI ...

  5. IOS横竖屏控制与事件处理

    公司App里面有个需求,即所有界面都是竖屏,且不允许横屏切换,唯独有一个图表界面允许横屏.那么,根据此需求处理如下: 首先,确保App本身应该允许转屏切换: 再次,我的App里面都是走UINaviga ...

  6. Rating

    Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission ...

  7. 想学React Native?你只需要一个App!(11月5号更新)

    最近有点空闲时间,顺手研究下react-native,2013年的时候在老师的指导下使用jQuery Mobile做过手机应用,那个运行速度慢呀!让我对WebApp和PhoneGap这一类的跨平台Ap ...

  8. 协议Protocol

    1.协议:是一组声明方法的集合,不能声明成员变量,作用类似于接口.           遵守此协议的类就相当于拥有了这个协议的所有方法的声明,如果父类遵守了某个协议,子类也遵守了这个协议.       ...

  9. ORM之PetaPoco入门(二)--Petapoco基本用法

    1. Petapoco基本用法 1.1. 创建示例工程 首先创建一个工程文件,为了便于展示数据这里创建一个类型为:WindowsApplication的工程文件.命名为:PetapocoTest. 程 ...

  10. “Request Entity Too Large” 上传图片出现大小限制

    昨天公司安卓app上传了图片爆了下面这个错误 <"-//IETF//DTD HTML 2.0//EN"> <html><head> <ti ...