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 ...
随机推荐
- 使用Java高速实现进度条
基于有人问到如何做进度条,以下给个简单的做法: 主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax. ...
- android151 笔记 3
34. 对android虚拟机的理解,包括内存管理机制垃圾回收机制. 虚拟机很小,空间很小,谈谈移动设备的虚拟机的大小限制 16M , 谈谈加载图片的时候怎么处理大图片的,压缩. 垃圾回收,没有引用的 ...
- 日志分析(二) logstash patterns
grok-patterns内置了很多基础变量的正则表达式的log解析规则,其中包括apache的log解析(同样可以用于nginx的log解析). 基于nginx日志分析配置: 1.配置nginx ...
- Excel转换成PDF
public class Office2Pdf { public bool DOCConvertToPDF(string sourcePath, string targetPath) { //Stre ...
- mysql权限及用户
一:Flush table tables_name MySQL的FLUSH句法(清除或者重新加载内部缓存) FLUSH flush_option [,flush_option],如果你想要清除一些My ...
- Centos自动登录系统并自动打开VNC Server
系统自动登录 修改配置文件 sudo vim /etc/gdm/custom.conf 增加配置 [daemon] AutomaticLogin=spark AutomaticLoginEnable= ...
- linux:ifconfig命令
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- SSIS 学习(2):数据流任务(上)【转】
数据流任务是SSIS中的一个核心任务,估计大多数ETL包中,都离不开数据流任务.所以我们也从数据流任务学起. 数据流任务包括三种不同类型的数据流组件:源.转换.目标.其中: 源:它是指一组数据存储体, ...
- obj 转为Json 时间格式自定义
var tb = evnWarningBll.GatWarning(); var timeFormat = new IsoDateTimeConverter(); ...
- [改善Java代码]不推荐覆写start方法
多线程比较简单的方式是继承Thread类,然后覆写run()方法,在客户端程序中通过调用对象的start方法即可启动一个线程,这个是多线程程序的标准写法. 错误代码: public class Cli ...