博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mono for Android 篇二 使用Spinner 实现下拉列表读取Browser.BookmarksUri
阅读量:6678 次
发布时间:2019-06-25

本文共 3641 字,大约阅读时间需要 12 分钟。

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目录中安装了哪些文件。

转载地址:http://fsyao.baihongyu.com/

你可能感兴趣的文章
一个很好的UML工具
查看>>
Default Constructor 的建构操作
查看>>
通过Python来操作kylin
查看>>
linkin大话数据结构--Set
查看>>
linux文件系统 - 初始化(二)
查看>>
javac不是内部或外部命令
查看>>
[C#基础知识系列]全面解析C#中静态与非静态
查看>>
ARC __bridge modifiers demystified
查看>>
Js~(function(){})匿名自执行方法的作用
查看>>
iSCSI存储系统知识
查看>>
Kali linux 2016.2(Rolling)里的应用更新和配置额外安全工具
查看>>
ubuntu12.04中shell脚本无法使用source的原因及解决方法
查看>>
Easyui的numberbox无法输入以0开头的数字编号(转载)
查看>>
网页截图工具CutyCapt
查看>>
解读 Node 核心模块 Stream 系列一( Readable )
查看>>
告别李国庆,19岁当当的思变与求变
查看>>
Runtime 从NullSafe源码看消息转发 机制
查看>>
前端性能优化--懒加载和预加载
查看>>
极限编程 (Extreme Programming) 和用户故事 (User Stories) 的关系
查看>>
程序员毒鸡汤:我们都该学会正确的失败
查看>>