Mono for Android 篇二 使用Spinner 实现下拉列表读取Browser.BookmarksUri

http://www.cnblogs.com/ivanyb/archive/2013/03/05/2944818.html

1、首先在VS2010里面创建一个Android Application

image

简单说明一下解决方案中各个文件的作用:

AndroidManifest.xml:项目环境配置文件,指明了使用Android SDK的版本,和应用能够访问Android 系统的权限配置

Main.axml:项目布局和控件管理文件

Strings.xml:资源文件,控件上的文本显示可以通过 @string/Hello"这种方式获取相应内容

image

image

Resource.Designer.cs:里面的内容会根据Main.axml中的控件生成对应的ID等信息。不需要手工编辑它。

 

2、创建应用

先上效果图在脑海里有个影响到底创建一个什么东东

image

 

打开Main.axml 出现Design界面,项目默认创建了一个button,删除之,拖一个Spinner控件到上面,按ctrl+shift+b编译,使我们刚拖的Spinner控件对应的信息生成到Resource.Designer.cs里

打开 Activity1.cs 文件写入如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Database;
using Android.Provider;
namespace AndroidApplication2
{
    [Activity(Label = "下拉列表", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity
    {
         protected override void OnCreate(Bundle bundle)
        {
           
            base.OnCreate(bundle);
            //设置Main为我们的布局资源
            SetContentView(Resource.Layout.Main);
                           
            CreateSpinner();
           
        }
        int lastSelected;
        public void CreateSpinner()
        {
            lastSelected = 0;
            //根据ID找到Spinner对象
            var tagSpinner = FindViewById<Spinner>(Resource.Id.spinner1);
            //spinner是通过adapter来绑定数据,所以我们创建一个SimpleCursorAdapter,其中数据来源于BookMarkCursor
            SimpleCursorAdapter simpadp = new SimpleCursorAdapter(this,
                Android.Resource.Layout.SimpleSpinnerItem, BookMarkCursor,
                new string[] { Browser.BookmarkColumns.Title },
                new int[] { Android.Resource.Id.Text1 });
             
            simpadp.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            //将创建的SimpleCursorAdapter 赋给Spinner的Adapter属性,完成数据绑定
            tagSpinner.Adapter = simpadp;
            tagSpinner.Prompt = "选择";
            //注册ItemSelected 事件,实现点击item打开对应的URL
            tagSpinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(tagSpinner_ItemSelected);
        }
        void tagSpinner_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e)
        {
            Spinner curspinner = (Spinner)sender;
            int curPosition=curspinner.SelectedItemPosition;
            if (lastSelected != curPosition)
            {
                ICursor cursor = (ICursor)curspinner.SelectedItem;
                int urlColumnIndex = cursor.GetColumnIndex(Browser.BookmarkColumns.Url);
                string url = cursor.GetString(urlColumnIndex);
                Intent intent = new Intent(Intent.ActionView);
                intent.SetData(Android.Net.Uri.Parse(url));
                StartActivity(intent);
                lastSelected = curPosition;
            }
        }
        private ICursor _BookMarkCursor;
        public ICursor BookMarkCursor
        {
            get
            {
                if (_BookMarkCursor == null)
                {
                    _BookMarkCursor = GetBookMarkCursor();
                }
                return _BookMarkCursor;
            }
            set
            {
                _BookMarkCursor = value;
            }
        }
        private ICursor GetBookMarkCursor()
        {
            return ManagedQuery(Browser.BookmarksUri, new string[]{
           Browser.BookmarkColumns.Title
           ,Browser.BookmarkColumns.Url
           ,Browser.BookmarkColumns.InterfaceConsts.Id
           }, null, null, null);
        }
    }
}
1
  

 

在项目属性的”Android Manifest” 标签中选择勾上”READ_HISTORY_BOOKMARKS“ 以允许应用程序读取BOOKMARKS的内容

image

打开模拟器后,F5运行,即出现可发布应用程序到模拟器中运行.

 

注意点:

1、Main.axml 里面的Spinner 控件的android:layout_height 要设置成"wrap_content" 如果设置成"fill_parent" 会报错:当前线程不能创建子控件(大概是这个意思,文字不一定准确。。。)

2、在创建SimpleCursorAdapter 的时候,

SimpleCursorAdapter simpadp = new SimpleCursorAdapter(this,Android.Resource.Layout.SimpleSpinnerItem, BookMarkCursor,new string[] { Browser.BookmarkColumns.Title },new int[] { Android.Resource.Id.
Text2
 });

将最后一项设置成了Text2发现,下拉列表中不出现文字,改为Android.Resource.Id.Text1子控件就正常了

3、在项目属性中设置image 的时候,由于android-sdk\platforms中只安装了android-8 ,但是在设置image的时候image 指向到16了,报android-16找不到,所以在选择Target API的时候请注意你android-sdk\platforms目录中安装了哪些文件。

转载于:https://www.cnblogs.com/CharlesGrant/p/3662810.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql不复制数据_windows mysql不停止服务复制数据

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

C++ 中的类模板

原文连接&#xff1a;http://see.xidian.edu.cn/cpp/biancheng/view/213.html 有时&#xff0c;有两个或多个类&#xff0c;其功能是相同的&#xff0c;仅仅是数据类型不同&#xff0c;如下面语句声明了一个类&#xff1a;class Compare_int{ public : Compare(int a,int b…

学生机房管理服务器系统设计,广东工业大学数据库课程设计机房管理系统设计...

《广东工业大学数据库课程设计机房管理系统设计》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《广东工业大学数据库课程设计机房管理系统设计(27页珍藏版)》请在人人文库网上搜索。1、课程设计个人报告课程名称 数据库应用与设计 _题目名称 机房管理系统 _学生学院 …

mysql磁盘临时表清理_mysql 创建大量磁盘临时表

发现 mysql 中创建的临时表基本都是磁盘临时表&#xff0c;对此进行排查。最后为临时表机制说明。通过查看 mysql 状态变量&#xff0c;看到创建的临时表基本都是磁盘临时表。查看临时表配置&#xff0c;默认配置 16M&#xff0c;配置并没有问题。创建两个表&#xff0c;做一个…

吃鸡服务器8月10日维护,《黑潮之上》2021年8月10日不停服维护公告

在黑潮之上手游中2021年8月10日更新了哪些有趣的内容呢&#xff1f;想了解本次更新情况如何的小伙伴们&#xff0c;接下来就让我们一起来看一下吧&#xff01;各位接触者:为了提供良好的游戏体验&#xff0c;保证服务器稳定运行&#xff0c;《黑潮之上》将于2021年8月10日早5:0…

资格赛:题目1:同构

时间限制:2000ms单点时限:1000ms内存限制:256MB描述 给定2个树A和B&#xff0c;保证A的节点个数>B的节点个数。 现在你需要对树A的边进行二染色。 一个好的染色方案&#xff0c;指不存在一个树A中的连通块&#xff0c;同时满足以下2个条件 1. 其中只有同色的边 2. 和B同构。…

如何使用Java 8 FlatMap JDBC ResultSet?

您还不喜欢机能吗&#xff1f; 这样标题可能不会引起您的共鸣-但文章会&#xff01; 相信我。 本质上&#xff0c;我们想要这样&#xff1a; ------------------ | col1 | col2 | col3 | ------------------ | A | B | C | row 1 | D | E | F | row 2 | G …

java 获取mysql链接_Java中如何获取mysql连接的3种方法总结

前言本文主要来说说三种 Java 中获取 mysql 连接的方式&#xff0c;分享出来供大家参考学习&#xff0c;下面话不多说了&#xff0c;来一起看看详细的介绍&#xff1a;第一种&#xff1a;传统的连接方式&#xff1b;第二种&#xff1a;读取配置文件方式&#xff1b;第三种&…

Netty writeAndFlush() 流程与异步

Netty writeAndFlush()方法分为两步, 先 write 再 flush Overridepublic ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) {DefaultChannelHandlerContext next;next findContextOutbound(MASK_WRITE);ReferenceCountUtil.touch(msg, next);next.invoker.in…

JavaScript学习总结(六)——JavaScript判断数据类型总结

最近做项目中遇到了一些关于javascript数据类型的判断处理&#xff0c;上网找了一下资料&#xff0c;并且亲自验证了各种数据类型的判断&#xff0c;在此做一个总结吧&#xff01; 一、JS中的数据类型 1.数值型&#xff08;Number&#xff09;&#xff1a;包括整数、浮点数。 2…

material 项目_Web开发必备的 10 个开源项目,不用自己亲自造轮子!

来自&#xff1a;Java and Python君Web 开发中几乎的平台都需要一个后台管理&#xff0c;但是从零开发一套后台控制面板并不容易&#xff0c;幸运的是有很多开源免费的后台控制面板可以给开发者使用&#xff0c;那么有哪些优秀的开源免费的控制面板呢&#xff1f;我在 Github 上…

香辣弹簧:自动接线的不同方法

我想展示使用Spring的Autowired批注的不同方式&#xff1a; Constructor &#xff0c; Method和Field自动装配。 我展示的示例都是byType自动装配模式的一种形式&#xff08; constructor自动装配模式类似于byType &#xff09;。 请参阅Spring Reference指南 &#xff0c;以获…

SVN部署(本地)

1.安装TortoiseSVN 2.建立Repository。在F:/下建立文件夹SVN_NATIVE_REPOSITORY&#xff0c; —— 》 3.在其他任意路径建立任意名称的路径&#xff0c;这里为D:\MSVC Project\SVN_WORK&#xff0c;确保该文件夹为空 右键单击&#xff0c;点击SVN Checkout&#xff0c; 第一行 …

InetAddressImpl#lookupAllHostAddr慢/挂起

自从我升级到优胜美地以来&#xff0c;我已经注意到尝试解析我的家庭网络上的本地主机已经花费了很多时间&#xff08;有时超过一分钟&#xff09;&#xff0c;所以我想我会尝试找出原因。 这是我的初始/ etc / hosts文件的外观&#xff0c;它基于我的机器的主机名是teetotal的…

mysql sqlserver schema_MySQL数据库数据迁移到SQLserver

最近因工作需要&#xff0c;需要将mysql数据库迁移到sqlserver&#xff0c;仅仅是数据迁移&#xff0c;因此相对比较简单。对于mysql迁移到sqlserver&#xff0c;我们需要使用到mysql odbc驱动&#xff0c;然后透过sqlserver链接服务器的方式来访问mysql。具体见下文描述。一、…

mysql客户端安装错误_windows下mysql 5.7以上版本安装及遇到的问题

(原)早些前用window安装mysql挺简单的&#xff0c;一个安装程序&#xff0c;一路下一步。2006的5.0版本&#xff0c;确实太早了点。于是官网上又下了一个版本&#xff0c;windows也是提供了二个版本Installer(安装)版和Archive(文档)版。Installer版本的后缀是.msi&#xff0c;…

SP2010开发和VS2010专家食谱--第二章节--工作流

本章内容&#xff1a; 1. 创建顺序工作流。 2. 创建带有初始表单的网站工作流。 3. 从工作流创建任务。 4. 创建自定义任务表单。 Introduction 根据国际工作流联盟&#xff08;http://www.WFMC.org&#xff09;标准组织&#xff0c;完全致力于流程&#xff0c;这样定义工作流&…

sklearn中eof报错_sklearn中的数据预处理和特征工程

小伙伴们大家好~o(&#xffe3;▽&#xffe3;)ブ&#xff0c;今天我们看一下Sklearn中的数据预处理和特征工程&#xff0c;老规矩还是先强调一下&#xff0c;我的开发环境是Jupyter lab&#xff0c;所用的库和版本大家参考&#xff1a;Python 3.7.1&#xff08;你的版本至少要…

sql显示前10行数据_SPL 简化 SQL 案例详解:计算各组前 N 行

取出各组的前N行数据是较常见的运算&#xff0c;比如&#xff1a;每个月每种产品销量最高的五天是哪五天&#xff0c;每位员工涨薪最多的一次是哪次&#xff0c;高尔夫会员成绩最差的三次是哪三次&#xff0c;等等。在SQL中&#xff0c;这类运算要用窗口函数以及keep/top/rownu…

jquery 与其他库冲突解决方案

var j jQuery.noConflict();j("div p").hide(); // 基于 jQuery 的代码$("content").style.display "none"; // 基于其他库的 $() 代码转载于:https://www.cnblogs.com/timelesszhuang/p/3677845.html