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的更多相关文章

  1. Android:控件Spinner实现下拉列表

    在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉列表,在其中每个下拉列表项使用<option>表示即可.这是在Web开发中一个必不可少的交 ...

  2. 【转】Android:控件Spinner实现下拉列表

    原文网址:http://www.cnblogs.com/tinyphp/p/3858920.html 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉 ...

  3. 【转】Android LCD(二):LCD常用接口原理篇

    关键词:android LCD TFT TTL(RGB)  LVDS  EDP MIPI  TTL-LVDS  TTL-EDP 平台信息:内核:linux2.6/linux3.0系统:android/ ...

  4. Android LCD(二):LCD常用接口原理篇(转)

    源: Android LCD(二):LCD常用接口原理篇

  5. Android(4)—Mono For Android 第一个App应用程序

    0.前言 年前就计划着写这篇博客,总结一下自己做的第一个App,却一直被新项目所累,今天抽空把它写完,记录并回顾一下相关知识点,也为刚学习Mono的同学提供佐证->C#也是开发Android的! ...

  6. Android(5)— Mono For Android 两个功能型外包

    0.前言 距上一篇博文貌似很久了,其中原因种种,归根结底是自己没有坚持好,没有静下心来归纳总结,希望从这一刻起每个月坚持写两篇.(哈哈,突然想起老师说起一句话, 晚上在被窝里悄悄发誓好好学习,第二天涛 ...

  7. 【转】android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)

    关键词:android  camera CMM 模组 camera参数  CAMIF平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos 4210) 作者 ...

  8. Mono for Android开发调研笔记

    安装完Mono for Android(简称:MonoDroid)之后,可以用MonoDevelop或Visual Studio来开发Mono for Android应用程序:目前只能在模拟器上调试和 ...

  9. React Native 轻松集成分享功能(Android 篇)

    关于推送的集成请参考这篇文章,关于统计的集成请参考这篇文章,本篇文章将引导你集成分享功能. 在集成插件之前,需要在各大开放平台上成功注册应用,并通过审核(支持 3 个可选的主流平台).支持的平台如下: ...

随机推荐

  1. HDU2191多重背包例题

    悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000 MS Memory Limit: 32768 KB 64-bit integer IO format: %I64d ...

  2. error adding symbols: DSO missing from command line collect2: error: ld returned 1 exit status

    Windows服务器Azure云编译安装MariaDB教程 www.111cn.net 编辑:future 来源:转载 安装MariaDB数据库最多用于linux系统中了,下文给各位介绍在Window ...

  3. 生成PHP数组文件

    1. 解释型语言的妙处之一,在于可以动态生成代码再调用执行~2. 对于数据量不大(几千条?)的(key,value),存成数组文件,执行查找操作,效率应该是好于数据库操作的:3. php的数组,是ha ...

  4. 一步步实现Nagios监控linux主机及飞信报警

    一步步实现Nagios监控linux主机及飞信报警 上篇文章介绍了在linux主机上架设nagios监控服务,并对windows主机进行服务状态变化的监控,这次我们继续上次内容.      首先实现n ...

  5. First Position of Target

    For a given sorted array (ascending order) and a target number, find the first index of this number ...

  6. Linux系统Shutdown命令定时关机详解

    转自:http://www.bootf.com/490.html Linux系统下的shutdown命令用于安全的关闭/重启计算机,它不仅可以方便的实现定时关机,还可以由用户决定关机时的相关参数.在执 ...

  7. global-local-static-object

    [本文链接] http://www.cnblogs.com/hellogiser/p/global-local-static-object.html [分析] 1.生命周期问题:static变量在固定 ...

  8. 【python】异常处理

    转自:http://www.cnblogs.com/IPrograming/p/Python_error_handler.html 1. 抛出异常和自定义异常 Python用异常对象(exceptio ...

  9. Replace Nested Conditional with Guard Clauses(用卫语句代替嵌套循环)

    函数中的条件逻辑,使人难以看清正常的执行路径. 使用卫语句表现所有特殊情况. double getPayAmount() {double result;if (_isDead) result = de ...

  10. 利用TabWidget实现底部菜单

    TabWidget类似于通话记录的界面,通过切换多个标签从而显示出多个不同内容,能够展示内容丰富的页面信息,而且彼此之间不会干扰,有利于展示.下面,通过一个例子来学习用法 首先用一个类来继承TabAc ...