参考文章: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 多选的更多相关文章
-
Xamarin开发Android应用打包apk
Visual Studio中用Xamarin开发Android应用,生成apk文件有3种方法 1.debug时,代码目录下bin\Debug中会自动生成调试用***-Signed.apk文件,但是文件 ...
-
【Xamarin开发 Android 系列 1】环境部署搭建
原文:[Xamarin开发 Android 系列 1]环境部署搭建 开篇自然先扯一段,近几年移动互联网如果熊猫零食一样,蔓延迅速.楼主身为一个微软忠实的粉丝,无奈,老爹不给力.Silverlight开 ...
-
Xamarin Studio Android 配置
原文:Xamarin Studio Android 配置 C#依托于mono平台可以实现Unix平台服务器端开发已经不是什么新鲜事了,而Xarmain公司(初始成员大多来自原Mono.MonoTouc ...
-
Xamarin C# Android for Visual Studio 平台安装
原文:Xamarin C# Android for Visual Studio 平台安装 Xamarin是基于Mono的平台,目前主要有以下产品(更具体请见:http://xamarin.com/pr ...
-
C#-Xamarin的Android项目开发(二)——控件应用
相信我,这不是一篇吐槽文章.... 基础控件 Android的控件和控件样式非常特别,它是一种内联特别高的设计模式,换句话说,它是非常烂的设计.... 但在这种特别的关系里还是有一定的规律的,下面我们 ...
-
xamarin开发android收集的一些工具
xamarin开发android收集的一些工具 工欲善其事,必先利其器,从16年下半年开始做xamarin相关的开发,平时使用的一些工具和google插件给大家分享一下,都有下载地址,持续更新. Vi ...
-
C#-Xamarin的Android项目开发(一)——创建项目
创建项目 使用Xamarin开发安卓项目,首先需要安装VS2017以上版本.因为VS2017以上的版本,可以直接创建Xamarin项目. 另外用Xamarin开发安卓项目,还需要使用Intel的CPU ...
-
C#-Xamarin的Android项目开发(三)——发布、部署、打包
前言 部署,通常的情况下,它其实也是项目开发的一个难点. 为什么这么说呢?因为,它不是代码开发,所以很多开发者本能的拒绝学习它. 并且一个项目配置好一次以后,部署的步骤和部署的人通常很固定,所以大部分 ...
-
Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结
最近公司要开发android 所以研究了一下Xamarin to android 中个GPS 废话不多说,说重点. 想获取手机上的gps信息必不可少的就是要使用 LocationManager Lo ...
随机推荐
-
redis 配置
一 Redis 支持写的指令 Redis大概的命令如下:set setnx setex appendincr decr rpush lpush rpushx lpushx linsert lset r ...
-
6.Swift协议|扩展|访问权限|异常调试|类型转换|运算函数|ARC|类类型初试化器|值类型初始化器
1. 协议(Protocol):与OC之间唯一不同的是Swift中的协议不管是属性还时方法全部是必须实现的 /** protocol*/ protocol FullNamed { /** 计算属性申明 ...
-
(转)C语言16进制输出字符型变量问题
最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: char ...
-
WebApi接口请求失败,找不到资源。
WebApi开发接口,实现同步数据库的数据给安卓. public class UserInfoController : ApiControllerBase { private UserBLL user ...
-
-实现 LFU 缓存算法
-实现 LFU 缓存算法, 设计一个类 LFUCache,实现下面三个函数 + 构造函数: 传入 Cache 内最多能存储的 key 的数量 + get(key):如果 Cache 中存在该 key, ...
-
服务器提交了协议冲突. Section=ResponseHeader Detail=CR...的解决方案总结
今天在HttpWebRequest发送一个网页请求的时候,HttpWebResponse返回了一个奇怪的错误信息: 这个Http协议请求类可是微软封装的,我使用的流程可是中规中矩,不可能是我写错代码, ...
-
Read Large Files in Python
I have a large file ( ~4G) to process in Python. I wonder whether it is OK to "read" such ...
-
Pycharm中快捷键大全
#1.按住ctrl然后鼠标放在函数上就会提示出这个函数有那些参数,双击进入该函数. 1.Pycharm中快捷键大全,遇到一个更新一个 撤销与反撤销:Ctrl + z,Ctrl + Shift + z ...
-
vmware虚拟机启动centOs黑屏
如图所示 , 我的VM 启动虚拟机之后就变成了上面的样子,一直不动,ping也ping不好,这个时候 : 1. 要么 内存不够了: 2. 要么 网络协议存在问题了: 本地windows环境在管理员的 ...
-
Java的对象和类
以下内容引用自http://wiki.jikexueyuan.com/project/java/object-classes.html: 一.概述 Java是一种面向对象的语言.作为一种具有面向对象特 ...