zoukankan      html  css  js  c++  java
  • xamarin android——数据绑定到控件(一)

    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=0;
    
                //使用系统提供的适配器视图模板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);
            }
  • 相关阅读:
    add custom attribute to standard windows controls
    产生0到1之间均匀分布的一个随机数与随机数序列
    (HDOJ 1002)A + B Problem II
    递推问题系列1幂积序列
    杭电题目分类解答
    (HDOJ 1003)Max Sum
    快排序(递归算法)
    (HDOJ 1004)Let the Balloon Rise
    (HDOJ 1005)Number Sequence
    一个关于去除数组重复元素的问题(C语言实现)
  • 原文地址:https://www.cnblogs.com/my-tzc/p/3749994.html
Copyright © 2011-2022 走看看