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. [Javascript] Either Functor

    Either Functor: // API Right(val) // resolve the value Left(val) // return error message Examples: m ...

  2. Android Bundle传递简单数据、对象数据

    Android开发过程中进程遇到组件之间.进程之间等数据的传递,数据传递有非常多种,当中使用Bundle传递非常方便. Bundle能够传递多种数据,是一种类似map的key-value数据结构 简单 ...

  3. 20种常用的DOS命令小结

    先介绍一下通配符的概念. 通配符*和? *表示一个字符串 ?只代表一个字符 注意通配符只能通配文件名或扩展名,不能全都表示.例如我们要查找以字母y开头的所有文件,可以输入以下命令:dir y*.*:如 ...

  4. sql server where、group by、order by 执行顺序

    2012-02-07 19:39 先where 条件1,再 group by 条件2再 order by 条件3 如果声明了 GROUP BY 子句,输出就分成匹配一个或多个数值的不同组里. 如果出现 ...

  5. C++_直接插入排序(纯C版)

    //用于比较大小 int compared(const void *key1,const void *key2) { cout<<"enter compare"< ...

  6. hadoop实例---多表关联

    多表关联和单表关联类似,它也是通过对原始数据进行一定的处理,从其中挖掘出关心的信息.如下 输入的是两个文件,一个代表工厂表,包含工厂名列和地址编号列:另一个代表地址表,包含地址名列和地址编号列.要求从 ...

  7. 《Entity Framework 6 Recipes》中文翻译——第十章EntityFramework存储过程处理(八)

    将插入.更新和删除操作映射到存储过程 问题 您想在存储过程中映射插入.更新和删除操作. 解决方案 下图所示的运动员Athlete实体模型.底层数据库有一张运动员Athlete表.您想使用存储过程进行实 ...

  8. python(1) - 条件判断和循环

    条件判断: 比如输入用户年龄,根据年龄打印不同的内容,在python中用if语句实现: age = 20 if age >= 18: print('你可以看这个视频!') 可以给if加一个els ...

  9. InvocationTargetException

    在使用反射的适合,调用的方法无论抛出什么异常,都会变成InvocationTargetException,要想得到原始的异常,必须使用getTargetException()

  10. 如何用C表示排列组合?

    问题来自<Linux C一站式编程>,是个挺有意思的题目. 2.定义一个数组,编程打印它的全排列.比如定义: #define N 3 int a[N] = { 1, 2, 3 }; 则运行 ...