Xamarin 实现android gridview 多选
参考文章: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 ...
随机推荐
- 安卓开发之探秘蓝牙隐藏API
上次讲解Android的蓝牙基本用法,这次讲得深入些,探讨下蓝牙方面的隐藏API.用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在S ...
- iOS开发——适配篇&App适配简单概括
App适配简单概括 1:适配:适应.兼容各种不同的情况 系统适配 针对不同版本的操作系统进行适配 屏幕适配 针对不同大小的屏幕尺寸进行适配 在用户眼中 屏幕是由无数个像素组成的 像素越多,屏幕越清晰 ...
- HttpClient post json
public static JSONObject post(String url,JSONObject json){ HttpClient client = new DefaultHttpClient ...
- 通过tracing技术来教授操作系统
https://www.cl.cam.ac.uk/teaching/1516/L41/materials.html https://github.com/myaut/dtrace-stap-book
- python首次尝试——hello world
百忙之中抽空学习python,但是令人惊讶的是连hello world都写不出来.
- graylog2 架构--转载
原文地址:http://docs.graylog.org/en/latest/pages/architecture.html Architectural considerations There ar ...
- 编程语言拟人化:Java、C++、Python、Ruby、PHP、C#、JS!--隆重推荐转
http://next.rikunabi.com/tech/docs/ct_s03600.jsp?p=002412 Java.C++.Python.Ruby.C#.PHP.JavaScript.7つの ...
- SQLite数据库中获取新插入数据的自增长ID
SQLite数据库中有一有列名为ID的自增列,项目需求要在向数据库在插入新数据的同时返回新插入数据行的ID. 我这里用事务,把插入和查询语句通过ExecuteReader一起提交,返回DbDataRe ...
- C++: Why pass-by-value is generally more efficient than pass-by-reference for built-in (i.e., C-like) types
A compiler vendor would typically implement a reference as a pointer. Pointers tend to be the same s ...
- 使用 MJ 自定义下拉刷新
// // ViewController.m // Refresh // // Created by Apple on 16/7/19. // Copyright © 2016年 mac. All r ...