https://blog.csdn.net/qq_35504350/article/details/78189004

这个是重点
  • JavaList<IDictionary<string, object>> data_list = null;//一定要用javalist不能用IList
    JavaDictionary<string, object> map = new JavaDictionary<string, object>();
如果你使用的C# 自带的List 会出现重复点击的问题

Dictionary 如果使用的是这个,那么会加载不出来菜单

 JavaList<IDictionary<string, object>> menuDatas = new JavaList<IDictionary<string, object>>();
foreach (var item in permissionArray)
{
JavaDictionary<string, object> map = new JavaDictionary<string, object>();
switch (item)
{
case "1":
map.Add("image", Resource.Drawable.图片);
map.Add("text", "文字描述");
break;
case "2":
map.Add("image", Resource.Drawable.图片);
map.Add("text", "文字描述");
break; default: break;
}
menuDatas.Add(map);
}
//新建适配器
string[] fromMenu = { "image", "text" };
int[] to = { Resource.Id.Img_MenuIco, Resource.Id.Txt_MenuTitle }; SimpleAdapter listAdapter = new SimpleAdapter(this, menuDatas, Resource.Layout.component_gridview_menu, fromMenu, to);
gvMenu.Adapter = listAdapter;
gvMenu.ItemClick += GvMenu_ItemClick;

private void GvMenu_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
switch (e.Position)
{
case 1: GridViewItemClick<要打开的页面类>(); break;
case 2: GridViewItemClick<要打开的页面类>(); break; default:
new AlertDialog.Builder(this)
.SetMessage("该功能还在开发中...")
.Show();
break;
}
}


 private void GridViewItemClick<T>() where T : Activity
{
StartNewActivity<T>(this, Resource.Animation.activity_fade_in, Resource.Animation.activity_fade_out, false, null);
}


 public void StartNewActivity<T>(Context ctext,int enterAnim, int exitAnim, bool isFinish, Bundle mBundle) where T : Activity
{
var typeActivity = typeof(T);
Log.Debug("打开新页面", _context + "" + typeActivity);
Intent mIntent = new Intent(ctext, typeActivity);
if (mBundle != null)
{
mIntent.PutExtras(mBundle);
}
StartActivity(mIntent);
OverridePendingTransition(enterAnim, exitAnim);
if (isFinish)
{
Finish();
}
}



Xamarin.Android 关于GridView 的正确使用方式的更多相关文章

  1. Android启动页面的正确打开方式 (转载)

    最近由于领导要求写一个手机APP,于是自学开始,不经意间想到使用过的手机APP在打开的时候都是会有一个启动页面,这是如何实现的呢?比较好奇,于是在网上搜到了以下这篇文章,经过个人实验的确可行,不过原文 ...

  2. Xamarin.Android编译CPU类型选择方式

    Xamarin.Android编译CPU类型选择方式 在Xamarin.Android编译的时候,默认提供了5种CPU类型供大家选择.它们分别为armeabi.armeabi-v7a.arm64-v8 ...

  3. Xamarin Android Fragment的两种加载方式

    android Fragment的重点: 3.0版本后引入,即minSdk要大于11 Fragment需要嵌套在Activity中使用,当然也可以嵌套到另外一个Fragment中,但这个被嵌套的Fra ...

  4. Xamarin. Android实现下拉刷新功能

    PS:发现文章被其他网站或者博客抓取后发表为原创了,给图片加了个水印 下拉刷新功能在安卓和iOS中非常常见,一般实现这样的功能都是直接使用第三方的库,网上能找到很多这样的开源库.然而在Xamarin. ...

  5. APP并非一个人在战斗,还有API—Xamarin.Android回忆录

    前言 一般来说,一个客户端APP并非独立存在的,很多时候需要与服务器交互.大体可分为两方面的数据,常规字符串数据和文件数据,因为这两种数据很可能传输方式不一样,比如字符串之类的数据,使用HTTP协议, ...

  6. [Xamarin.Android] 自定义控件

    [Xamarin.Android] 自定义控件 前言 软件项目开发的过程中,免不了遇到一些无法使用内建控件就能满足的客户需求,例如:时速表.折线图...等等.这时开发人员可以透过自定义控件的方式,为项 ...

  7. Xamarin.Android开发实践(八)

    Xamarin.Android其他类型的服务 一.前言 前面我们已经学了关于服务的很多知识,但是对于真实的开发那些远远不够,通过这节我们将学习其他类型的服务,比如前台服务.IntentService和 ...

  8. Xamarin.Android开发实践(四)

    原文:Xamarin.Android开发实践(四) Xamarin.Android下获取与解析JSON 一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选 ...

  9. Xamarin.Android Binding篇

    前言 趁着失业了,闲着没事儿学习了下Xamarin.Android binding,在以往的开发中,我相信很多人都遇到过binding的坑,也不例外, 我也踩了很多雷,好在认识了个大佬,指导了很多  ...

  10. 基于Xamarin Android实现的简单的浏览器

    最近做了一个Android浏览器,当然功能比较简单,主要实现了自己想要的一些功能……现在有好多浏览器为什么还要自己写?当你使用的时候总有那么一些地方不如意,于是就想自己写一个. 开发环境:Xamari ...

随机推荐

  1. Windows Terminal 调整默认终端

    Windows Terminal 打开时默认的是 PowerShell, 如下图: 但是, 我希望默认的是更轻快的 cmd... 打开设置 调整 defaultProfile 为 cmd.exe 配置 ...

  2. Nginx日志拆分(linux环境下)

    1.新增shell脚本[nginx_log.sh],进行每日自动切割一次,存储在nginx文件夹下的logs下 #!/bin/bash #设置日志文件存放目录 LOG_HOME="/app/ ...

  3. 看了他,妈妈再也不用担心我被问到Mybatis缓存了

    Mybatis缓存 一.一级缓存 1. 概念 sqlsession级别的缓存,即缓存的是SQL语句 同一个sqlsession中执行多次查询条件相同的SQL,mybatis会提供一级缓存进行优化 2. ...

  4. firebase studio硬刚cursor,送免费云服务可跑23b大模型

    谷歌IDX提供免费高配云服务器(16核CPU,64G内存,300G硬盘),无需绑卡,只需一个能正常使用的谷歌账号.这是一个非常强大的开发环境,特别适合运行大型AI模型和开发工作. 一.Google I ...

  5. hadoop部署安装(五)SPARK

    1. 配置spark 4.1 解压压缩包 [root@centosmv ~]# tar xf spark-2.4.4-bin-without-hadoop.tgz [root@centosmv ~]# ...

  6. C# 线程基础——用户模式、内核模式

    C# 线程基础--用户模式.内核模式 参照:用户模式和内核模式 - Windows drivers | Microsoft Docs 基础概念 运行 Windows 的计算机中的处理器有两个不同模式: ...

  7. Web前端入门第 44 问:CSS 循环动画 animation 效果演示

    相关属性 @keyframes 定义动画的关键帧序列 animation-name 指定 @keyframes 动画的名称 animation-duration 动画单次循环的持续时间(必需属性,否则 ...

  8. K8s新手系列之K8s架构

    应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署 互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与缺点:不能为应用程序定义资源使用边界,很难合理地分 ...

  9. GIM: 调用AI自动生成git提交消息的工具

    GIM - Git Intelligence Message,是根据文件变更内容,自动请求用户配置的AI服务,生成提交消息的工具. 代码托管地址 https://github.com/davelet/ ...

  10. 【TensorRT 10 C++ inference example】最新版本TensorRT c++ api的推理部署教程

      TensorRT是英伟达推出的部署框架,我的工作经常需要封装我的AI算法和模型给到桌面软件使用,那么tensorRT对我来说就是不二之选.TensorRT和cuda深度绑定,在c++版本的推理教程 ...