Android 中文 API (102)—— CursorAdapter

简介:

正文

  一、结构

public abstract class CusrorAdapter extends BaseAdpater implements Filterable

 

java.lang.Object

android.widget.BaseAdapter

         android.widget.CursorAdapter

 

直接子类

      ResourceCursorAdapter

间接子类

SimpleCursorAdapter

 

  二、概述

    通过该类可以用Cursor的方式访问数据库,并将查询出来的数据展示到列表视图(ListView)部件上。其中游标携带的结果集中必须有列名为“_id”的列,否则这个类无法工作。

 

  三、构造函数

    public CusorAdapter(Context context,Cursor c)   

           构造函数。每当数据库的数据发生改变时,适配器将调用requery()重新查询以显示最新的数据。

             参数

       context        应用程序上下文。

  c                 用来获取数据的游标(Coursor)

 

    public CusorAdapter(Context context,Cursor c, boolean autoRequery)       

  构造函数。每当数据库的数据发生改变时,适配器将调用requery()重新查询以显示最新的数据。

             参数

       context        应用程序上下文。

  c                 用来获取数据的Coursor

                      autoRequry     设置为true时,每当数据库的数据发生改变时,适配器将调用requery()重新查询以显示最新的数据。

 

  四、公共方法

  public abstract void bindView (View view, Context context, Cursor cursor)

  重用一个已有的view,使其显示当前cursor所指向的数据。

  参数

                   view                已存在的视图返回之前newView方法创建的视图。

                   context          应用程序上下文

                   cursor               用于获取数据的CoursorCoursor已经移到正确的位置。

        

  public void changeCursor (Cursor cursor)

           更改底层的游标为新传入的游标。如果游标已经存在则先关闭这个已存在的游标。

  参数                  

                   cursor               Cursor

 

  public CharSequence convertToString (Cursor cursor)

           cursor转换成CharSequence。子类应该重写这个方法并转换它们的结果。这个方法的默认实现是:当cursor为空时返回一个空串,否则直接返回调用cursortoString()方法。

  参数        

                   cursor               cursor转换成CharSequence对象。

           返回值

             返回表示CharSequence的值。

 

  public int getCount ()

         (译者注:获取适配器中数据的总行数。)

             参见

                      getCount()

 

  public Cursor getCursor ()

           返回当前适配器绑定的Cursor对象。

  返回值

            Cursor对象。

 

  public View getDropDownView (int position, View convertView, ViewGroup parent)

  获取下拉列表选项指定位置的视图对象

  参数

           position  视图(View)对象的行索引。

           convertView       重用已有的视图(View)对象。备注:在使用前你应该检查一下这个视图对象是否非空并且这个对象的类型是否合适。由此引伸出,如果该对象不能被转换并显示正确的数据,这个方法内部就会重新创建一个合适的视图(View)对象。

           parent  不管是转换后的还是重新创建的视图(View)对象,始终都会依附于parent对象上。

  返回值    

                   返回视图(View)对象,该对象显示数据集指定位置上的数据。

 

  public Filter getFilter ()

  返回一个可以通过一种过滤模式来约束数据的过滤器。

  这个方法通常在Adapter类实现。

  返回值

                   一个用于约束数据的过滤器

 

  public FilterQueryProvider getFilterQueryProvider ()

  返回一个提供过滤的查询过滤器。若过滤器为null,则不再过滤。

  返回值

                   返回当前过滤器对象,如果不存在返回null

                 参见

                   setFilterQueryProvider(android.widget.FilterQueryProvider)

                   runQueryOnBackgroundThread(CharSequence)

 

  public Object getItem (int position)

  (译者注:获取数据集中指定位置上的数据项目)

                  参见

                       getItem(int)

 

  public long getItemId (int position)

         (译者注:获取数据集中的指定位置上的行id。)

             参见

                       getItemId(int)

 

  public View getView (int position, View convertView, ViewGroup parent)

  (译者注:获取一个显示数据集中指定位置数据段视图。可以手动创建视图,或者从XML设计文件填充。当视图从XML设计文件填充时,父视图(如GridViewListView等)将接受默认的设计参数,除非使用inflate(int, android.view.ViewGroup, boolean)去指定一个根视图和防止依附于根视图。)

        参见

                   getView(int, View, ViewGroup)

 

  public boolean hasStableIds ()

无论项ID代表的基础数据的是否变化都保持不变。

      返回值

  如果为TRUE,意味着相同的ID始终引用相同的对象。

 

  public View newDropDownView (Context context, Cursor cursor, ViewGroup parent)

  生成一个新的下拉视图来保存cursor指向的数据

           参数

             context  应用程序全局信息接口(应用上下文)

  cursor  获取数据的游标,它已经移动到正确的位置

  parent 与新视图相关联的上级视图

  返回值

  新创建的视图。

 

  public abstract View newView (Context context, Cursor cursor, ViewGroup parent)

  新建一个视图来保存cursor指向的数据

           参数

             context  应用程序全局信息接口(应用上下文)

  cursor  获取数据的游标,它已经移动到正确的位置

  parent 与新视图相关联的上级视图

  返回值

                   新创建的视图。

 

  public Cursor runQueryOnBackgroundThread (CharSequence constraint)

  执行含指定约束的查询。此查询依赖于适配器的过滤器。查询是由FilterQueryProvider提供。如果没有指定FilterQueryProvider,当前cursor不过滤只返回。该方法会通过changeCursor(Cursor)方法返回一个Cursor对象,并且关闭掉先前的Cursor对象。这个方法始终在后台线程执行,而不是在应用程序的主线程(或是UI线程)中运行。规定:当参数constraintnull或为空时,该方法返回原始结果。

        参数

              constraint 该查询必须被过滤的约束。

  返回值

  返回含有新的查询结果的Cursor

  参考

         getFilter()

getFilterQueryProvider()

               setFilterQueryProvider(android.widget.FilterQueryProvider)

 

  public void setFilterQueryProvider (FilterQueryProvider filterQueryProvider)

  设置一个过滤器,用来过滤当前的Cursor对象。当这个适配器需要进行过滤操作时, runQuery(CharSequence)方法被调用

       参数

  filterQueryProvider  过滤器对象,设置为null时,就相当于移除了该过滤器。

                参考

                       getFilterQueryProvider()

runQueryOnBackgroundThread(CharSequence)

 

  五、受保护方法

  protected void init (Context context, Cursor c, boolean autoRequery)

  (译者注:供构造函数使用初始化相关参数)

 

  protected void onContentChanged ()

   cursor 对象上的 ContentObserver 接收到改变的通知时就会调用该方法,其默认实现提供了自动重新查询方式,但可以被子类重写。

 


本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582387,如需转载请自行联系原作者

相关文章
|
4月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
15天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
40 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
27天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
164 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
25天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
48 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
2月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
97 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
11天前
|
安全 Android开发 iOS开发
escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
escrcpy 是一款基于 Scrcpy 的开源项目,使用 Electron 构建,提供图形化界面来显示和控制 Android 设备。它支持 USB 和 Wi-Fi 连接,帧率可达 30-120fps,延迟低至 35-70ms,启动迅速且画质清晰。escrcpy 拥有丰富的功能,包括自动化任务、多设备管理、反向网络共享、批量操作等,无需注册账号或广告干扰。适用于游戏直播、办公协作和教育演示等多种场景,是一款轻量级、高性能的 Android 控制工具。
|
2月前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
41 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
3月前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
82 19
|
3月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
101 14

热门文章

最新文章

  • 1
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    Android历史版本与APK文件结构
  • 3
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 4
    当flutter react native 等混开框架-并且用vscode-idea等编译器无法打包apk,打包安卓不成功怎么办-直接用android studio如何打包安卓apk -重要-优雅草卓伊凡
  • 5
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 9
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 10
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥