mono for android 中光标由ICursor 接口标识,该接口公开了操作结果数据集的所有方法。光标的使用非常消耗系统资源,所以不使用时应该光比光标。可以通过StartManagingCursor方法允许应用程序管理光标。示例中通过spinner显示用户浏览网址的历史记录,历史记录通过系统提供的内容提供器获取数据,更多内容提供器参考Android 开发文档http://developer.android.com/reference/android/provider/package-summary.html。

注意:添加相应的权限

在活动中定义InitSpinner方法,用来初始化spinner对象和关联适配器和适配器视图。private void InitSpinner()

        {
spinner = FindViewById<Spinner> (Resource.Id.spinner);
//定义变量 判断所选项,避免初始数据会出发ItemSelected
int lastSpinnerSelectedPositon=; //使用系统提供的适配器视图模板SimpleSpinnerItem
SimpleCursorAdapter spinnerAdapter1 = new SimpleCursorAdapter (this,Android.Resource.Layout.SimpleSpinnerItem,GetBookMarkCursor(),
new string[]{ Browser.BookmarkColumns.Title },new int[]{ Android.Resource.Id.Text1 }); //获取联系人
//SimpleCursorAdapter spinnerAdapter2 = new SimpleCursorAdapter (this,Android.Resource.Layout.SimpleSpinnerItem,GetContacts(),
// new string[]{ ContactsContract.ContactsColumns.DisplayName },new int[]{ Android.Resource.Id.Text1 }); //指定spinner 弹出的选择列表的样式
spinnerAdapter1.SetDropDownViewResource (Android.Resource.Layout.SimpleSpinnerDropDownItem);
spinner.Adapter = spinnerAdapter1;
//spinner.Prompt = "选择打开网址";
spinner.ItemSelected+= (object sender, AdapterView.ItemSelectedEventArgs e) => {
var curSelectedIndex = spinner.SelectedItemPosition;
//避免初始化数据时执行方法
if (curSelectedIndex!=lastSpinnerSelectedPositon) {
Android.Database.ICursor selectedItem = (Android.Database.ICursor)spinner.SelectedItem;
var webUrl = selectedItem.GetString(selectedItem.GetColumnIndex(Browser.BookmarkColumns.Url));
            
            //通过意图打开指定网址
Intent browerIntent = new Intent(Intent.ActionView);
browerIntent.SetData(Android.Net.Uri.Parse(webUrl)); StartActivity(browerIntent); /*Intent callIntent = new Intent(Intent.ActionCall,Android.Net.Uri.Parse("tel:10086"));
StartActivity(callIntent);*/ lastSpinnerSelectedPositon = curSelectedIndex;
}
};
}

创建SimpleCursorAdapter对象,通过GetBookMarkCursor方法提供数据,方法的主要功能是通过Activity类的ManagedQuery方法查询内容提供器,可以避免直接管理光标。

参数及返回值介绍

参数:

uri, 用于 Content Provider 查询的 URI,也就是说从这个 URI 中获取数据。例如:

Uri uri = Contacts.People.CONTENT_URI; //联系人列表URI。

projection, 用于标识 uri 中有哪些 columns 需要包含在返回的 Cursor 对象中。例如:

//待查询的columns

String[] projection = { Contacts.PeopleColumns.NAME, Contacts.PeopleColumns.NOTES };

selection, 作为查询的过滤参数(过滤出符合 selection 的数据),类似于 SQL 中 Where 语句之后的条件选择。例如:

String selection = Contacts.People.NAME + “=?” //查询条件

selectionArgs查询条件参数,配合 selection 参数使用。例如:

String[] selectionArgs = {“Braincol”, “Nixn.dev”};//查询条件参数

sortOrder,查询结果的排序方式(按查询列( projection 参数中的 columns )中的某个 column )排序)。例如:

String sortOrder = Contacts.PeopleColumns.NAME; //查询结果的排序方式(按指定的查询列排序)

返回值:

一个包含指定数据的 Cursor 对象。

GetBookMarkCursor方法实现

private Android.Database.ICursor GetBookMarkCursor()
{
//通过系统提供的内容提供器获取数据
return ManagedQuery (Browser.BookmarksUri,new string[]{ Browser.BookmarkColumns.Title,
Browser.BookmarkColumns.Url,Browser.BookmarkColumns.InterfaceConsts.Id},null,null,null);
}

xamarin android——数据绑定到控件(一)的更多相关文章

  1. xamarin android——数据绑定到控件(二)

    本示例为通过媒体内容提供器获取本机中的图片显示在Gallery中. 活动中简单的初始化代码 private void InitGallery() { Gallery gallery = FindVie ...

  2. xamarin android——数据绑定到控件(四)

    本文为通过自定义列表适配器定义ListView,以上文为基础,基于ListActivity. 定义列表项布局,包含一个图片显示,标题和描述 <LinearLayout xmlns:android ...

  3. xamarin android——数据绑定到控件(三)

    如果当前活动中,只存在一个listview视图,可以借助ListActivity快速的实现一个列表,即当前Activity继承ListActivity.在OnCreate方法中简单的两行代码,就可以创 ...

  4. 安卓控件 仪表盘控件 柱状图控件 曲线控件 xamarin.android 分类器 瓶子控件 报警控件 水箱控件 进度条控件等

    本篇博客主要介绍一个控件库,HslControls.dll 的界面,这个控件库支持winform,winform的参考另一篇文章:https://www.cnblogs.com/dathlin/p/1 ...

  5. Xamarin.android 重写axml控件

    https://www.cnblogs.com/lonelyxmas/p/5632694.html <Laco: 用来用引指定的控件            android:layout_widt ...

  6. Xamarin.Android DatePickerFragment 日期控件

    MainActivity 代码: public class MainActivity : Activity { TextView _dateDisplay; Button _dateSelectBut ...

  7. xamarin.android 给View控件 添加数字提醒效果-BadgeView

    本文代码从java项目移植到.net项目   java开源项目:https://github.com/jgilfelt/android-viewbadger using System; using S ...

  8. [置顶] Android常用适配器控件

    Android常用适配器控件 列表控件用于显示数据集合,Android不是使用一种类型的控件管理显示和数据,而是将这两项功能分布用列表控件和适配器来实现.列表控件扩展了android.widget.A ...

  9. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

随机推荐

  1. 详解Android Handler的使用-别说你不懂handler

    我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念         Handler主 ...

  2. iOS开发——实用篇&提高iOS开发效率的方法和工具

    提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...

  3. Linux下vim配置详解

    转自http://www.cnblogs.com/witcxc/archive/2011/12/28/2304704.html

  4. string2array($value);

    /*** 将字符串转换为数组** @param string $data 字符串* @return array 返回数组格式,如果,data为空,则返回空数组*/if ( !function_exis ...

  5. Debian7.7 wheezy 中源码安装emacs24

    我用的是ARM版本,竟然没有最新的emacs 24,很多第三方插件不能用,果断重新编译个1.追加软件源 deb-src http://ftp.cn.debian.org/debian/ wheezy ...

  6. 炼数成金hadoop视频干货03

    视频地址:http://pan.baidu.com/s/1dDEgKwD 着重介绍了HDFS 运行了示例程序wordcount,自己也试了一遍(用的伪分布式) 1.建立数据(和讲师的操作有些不一样,不 ...

  7. Subsequence

    Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...

  8. JavaFX(二)自定义窗口标题栏

    1.问题场景 PC客户端登录界面仿QQ,上边显示图片,下边显示输入框和登录按钮.而JavaFX默认的窗口,不满足需求. 2.解决思路 隐藏窗口默认的标题栏,使用创建label对象,使用css将按钮图片 ...

  9. MYSQL基础笔记(四)-数据基本操作

    数据操作 新增数据:两种方案. 1.方案一,给全表字段插入数据,不需要指定字段列表,要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致.凡是非数值数据,到需要使用引号(建议使用单引号)包裹. i ...

  10. request 和response 中的setCharacterEncoding区别

    response和request的setCharacterEncoding 一.request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值. 指 ...