Mono for Android 篇二 使用Spinner 实现下拉列表读取Browser.BookmarksUri
http://www.cnblogs.com/ivanyb/archive/2013/03/05/2944818.html
1、首先在VS2010里面创建一个Android Application

简单说明一下解决方案中各个文件的作用:
AndroidManifest.xml:项目环境配置文件,指明了使用Android SDK的版本,和应用能够访问Android 系统的权限配置
Main.axml:项目布局和控件管理文件
Strings.xml:资源文件,控件上的文本显示可以通过 @string/Hello"这种方式获取相应内容


Resource.Designer.cs:里面的内容会根据Main.axml中的控件生成对应的ID等信息。不需要手工编辑它。
2、创建应用
先上效果图在脑海里有个影响到底创建一个什么东东

打开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的内容

打开模拟器后,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、在项目属性中设置
的时候,由于android-sdk\platforms中只安装了android-8 ,但是在设置
的时候
指向到16了,报android-16找不到,所以在选择Target API的时候请注意你android-sdk\platforms目录中安装了哪些文件。
Mono for Android 篇二 使用Spinner 实现下拉列表读取Browser.BookmarksUri的更多相关文章
- Android:控件Spinner实现下拉列表
在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交 ...
- 【转】Android:控件Spinner实现下拉列表
原文网址:http://www.cnblogs.com/tinyphp/p/3858920.html 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉 ...
- 【转】Android LCD(二):LCD常用接口原理篇
关键词:android LCD TFT TTL(RGB) LVDS EDP MIPI TTL-LVDS TTL-EDP 平台信息:内核:linux2.6/linux3.0系统:android/ ...
- Android LCD(二):LCD常用接口原理篇(转)
源: Android LCD(二):LCD常用接口原理篇
- Android(4)—Mono For Android 第一个App应用程序
0.前言 年前就计划着写这篇博客,总结一下自己做的第一个App,却一直被新项目所累,今天抽空把它写完,记录并回顾一下相关知识点,也为刚学习Mono的同学提供佐证->C#也是开发Android的! ...
- Android(5)— Mono For Android 两个功能型外包
0.前言 距上一篇博文貌似很久了,其中原因种种,归根结底是自己没有坚持好,没有静下心来归纳总结,希望从这一刻起每个月坚持写两篇.(哈哈,突然想起老师说起一句话, 晚上在被窝里悄悄发誓好好学习,第二天涛 ...
- 【转】android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
关键词:android camera CMM 模组 camera参数 CAMIF平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者 ...
- Mono for Android开发调研笔记
安装完Mono for Android(简称:MonoDroid)之后,可以用MonoDevelop或Visual Studio来开发Mono for Android应用程序:目前只能在模拟器上调试和 ...
- React Native 轻松集成分享功能(Android 篇)
关于推送的集成请参考这篇文章,关于统计的集成请参考这篇文章,本篇文章将引导你集成分享功能. 在集成插件之前,需要在各大开放平台上成功注册应用,并通过审核(支持 3 个可选的主流平台).支持的平台如下: ...
随机推荐
- poj1860 bellman—ford队列优化 Currency Exchange
Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 22123 Accepted: 799 ...
- Linux upstart启动方式详解
Ubuntu从6.10开始逐步用Upstart()代替原来的SysVinit进行服务进程的管理.RHEL(CentOS)也都从版本6开始转用Upstart代替以往的init.d/rcX.d的线性启动 ...
- HM必修1
高中数学必修一 笔记与拓展 1. 集合与函数概念 集合概念 集合是一个基本的数学概念. 集合是由集合的元素构成的. 当且仅当两个集合中包含着完全相同的元素且都不包含其它元素时两个集合相等. 集合是确定 ...
- JAVA 中BIO,NIO,AIO的理解
[转自]http://qindongliang.iteye.com/blog/2018539 ?????????????????????在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解 ...
- Android Studio在线安装Android SDK注意事项
由于使用的Android studio自带了sdk23,然而其它版本的sdk并没有安装:这些天由于需要用到低版本的sdk,因而使用Android SDK Manager进行相应的更新.开始的时候老是无 ...
- Maven无法引入自定义构件依赖的解决方案
一般情况下,使用如下命令即可将自定义构件安装到本地仓库,供其他项目使用. mvn clean install 但是也有例外,今天我就分享一下我遇到问题,供相同遭遇的同学参考下. 我使用了父POM统一管 ...
- HDU 4334 Trouble (暴力)
Trouble Time Limit: 5000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Submit Statu ...
- 解决Unable to locate Kerberos realm
在windows环境下 将服务器上的/etc/krb5.conf 复制到<jdk-home>/jre/lib/security
- 强制JSP页面刷新,防止被服务器缓存(可用于静态include强制刷新)
对于jsp页面,为了防止页面被服务器缓存.始终返回同样的结果. 通常的做法是在客户端的url后面加上一个变化的参数,比如加一个当前时间. 我现在使用的方法是在jsp头部添加以下代码: <% ...
- 越狱后天气闪退 iPhone5天气闪退解决方法
iPhone5天气闪退解决方法: 第一步:前往Cydia卸载AppSync; 第二步:通过iTools删除/var/mobile/Library/Caches/com.apple.mobile.ins ...