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);
            }
  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/my-tzc/p/3749994.html
Copyright © 2011-2022 走看看