前言

  本章内容是android.widget.ResourceCursorAdapter,版本为Android 2.3 r1,翻译来自"HalZhang",欢迎大家访问他的博客:http://www.cnblogs.com/halzhang,再次感谢"HalZhang" !期待你加入Android API 中文的翻译,联系我over140@gmail.com。

声明

  欢迎转载,但请保留文章原始出处:)

    农民伯伯:http://over140.blog.51cto.com/

    Android中文翻译组:http://goo.gl/6vJQl

正文

  一、结构

public abstract class ResourceCursorAdapter extends CursorAdapter

java.lang.Object

android.widget.BaseAdapter

android.widget.CursorAdapter

android.widget.ResourceCursorAdapter

直接子类

SimpleCursorAdapter

  二、概述

    这是一个简单的适配器,通过指定一个定义了视图UI的XML文件来创建视图。

  三、构造函数

  public ResourceCursorAdapter (Context context, int layout, Cursor c)

构造函数

参数

Context    与ListView相关的正在运行的 SimpleListItemFactory上下文

layout       一个定义了列表项视图的布局文件资源ID,这个布局同时定义列表项视图和下拉视图,直到你重写它们。

c                获取数据的游标

public ResourceCursorAdapter (Context context,int layout, Cursor c, boolean autoRequery)

    构造函数

    参数

Context    与ListView相关的正在运行的 SimpleListItemFactory上下文

layout       一个定义了列表项视图的布局文件资源ID,这个布局同时定义列表项视图和下拉视图,直到你重写它们。

c                获取数据的游标

autoRequery    如果此参数为true,当适配器的数据发生变化的时,适配器会调用游标的requery()方法,使最新的数据始终显示。

  四、公共方法

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

生成一个新的下拉视图来控制游标指向的数据

参数

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

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

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

返回值

新创建的视图

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

根据指定的xml文件创建视图

参数

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

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

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

返回值

新创建的视图

参见

newView(android.content.Context, android.database.Cursor, ViewGroup)

public void setDropDownViewResource (int dropDownLayout)

设置下拉视图相应的布局资源

参数

dropDownLayout     用于创建下拉视图的布局资源

public void setViewResource (int layout)

设置列表项视图相应的布局资源

参数

layout       用于创建列表项视图的布局资源

  五、补充

  文章精选

ListActivity简介

    代码示例(ApiDemos\src\com\example\android\apis\app\QuickContactsDemo.java)

public class QuickContactsDemo extends ListActivity {
    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
            Contacts._ID, // 0
            Contacts.DISPLAY_NAME, // 1
            Contacts.STARRED, // 2
            Contacts.TIMES_CONTACTED, // 3
            Contacts.CONTACT_PRESENCE, // 4
            Contacts.PHOTO_ID, // 5
            Contacts.LOOKUP_KEY, // 6
            Contacts.HAS_PHONE_NUMBER, // 7
    };

static final int SUMMARY_ID_COLUMN_INDEX = 0;
    static final int SUMMARY_NAME_COLUMN_INDEX = 1;
    static final int SUMMARY_STARRED_COLUMN_INDEX = 2;
    static final int SUMMARY_TIMES_CONTACTED_COLUMN_INDEX = 3;
    static final int SUMMARY_PRESENCE_STATUS_COLUMN_INDEX = 4;
    static final int SUMMARY_PHOTO_ID_COLUMN_INDEX = 5;
    static final int SUMMARY_LOOKUP_KEY = 6;
    static final int SUMMARY_HAS_PHONE_COLUMN_INDEX = 7;

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String select = "((" + Contacts.DISPLAY_NAME + " NOTNULL) AND ("
                + Contacts.HAS_PHONE_NUMBER + "=1) AND ("
                + Contacts.DISPLAY_NAME + " != '' ))";
        Cursor c =
                getContentResolver().query(Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select,
                null, Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
        startManagingCursor(c);
        ContactListItemAdapter adapter = new ContactListItemAdapter(this, R.layout.quick_contacts, c);
        setListAdapter(adapter);

}

private final class ContactListItemAdapter extends ResourceCursorAdapter {
        public ContactListItemAdapter(Context context, int layout, Cursor c) {
            super(context, layout, c);
        }

@Override
        public void bindView(View view, Context context, Cursor cursor) {
            final ContactListItemCache cache = (ContactListItemCache) view.getTag();
            TextView nameView = cache.nameView;
            QuickContactBadge photoView = cache.photoView;
            // Set the name
            cursor.copyStringToBuffer(SUMMARY_NAME_COLUMN_INDEX, cache.nameBuffer);
            int size = cache.nameBuffer.sizeCopied;
            cache.nameView.setText(cache.nameBuffer.data, 0, size);
            final long contactId = cursor.getLong(SUMMARY_ID_COLUMN_INDEX);
            final String lookupKey = cursor.getString(SUMMARY_LOOKUP_KEY);
            cache.photoView.assignContactUri(Contacts.getLookupUri(contactId, lookupKey));
        }

@Override
        public View newView(Context context, Cursor cursor, ViewGroup parent) {
            View view = super.newView(context, cursor, parent);
            ContactListItemCache cache = new ContactListItemCache();
            cache.nameView = (TextView) view.findViewById(R.id.name);
            cache.photoView = (QuickContactBadge) view.findViewById(R.id.badge);
            view.setTag(cache);

return view;
        }
    }

final static class ContactListItemCache {
        public TextView nameView;
        public QuickContactBadge photoView;
        public CharArrayBuffer nameBuffer = new CharArrayBuffer(128);
    }
}

Android 中文API(86)——ResourceCursorAdapter相关推荐

  1. Android 中文API (94) —— MediaController

    前言 本章内容是android.widget.MediaController,版本为Android 2.3 r1,翻译来自"唐明",再次感谢"唐明" !期待你一 ...

  2. Android 中文 API 文档 (45) —— AbsoluteLayout.LayoutParams

    前言 本章内容是 android.widget.AbsoluteLayout.LayoutParams,版本为Android 2.2 r1,翻译来自"绵白糖",再次感谢" ...

  3. Android 中文API (92) —— MenuInflater

    前言 本章内容是android.view.MenuInflater,版本为Android 2.3 r1,翻译来自"獨鍆躌踄",欢迎大家访问他的博客:http://www.cnblo ...

  4. Android 中文 API (90) —— WindowManager

    一.结构 public interface WindowManager extends android.view.ViewManager android.view.WindowManager 二.概述 ...

  5. Android 中文API (70) —— BluetoothDevice[蓝牙]

    前言 本章内容是 android.bluetooth.BluetoothDevice,为Android蓝牙部分的章节翻译.蓝牙设备类,代表了蓝牙通讯国足中的远端设备.版本为 Android 2.3 r ...

  6. Android中文API(127) —— MessageQueue

    结构 继承关系 public class MessageQueue extends Object java.lang.Object android.os.MessageQueue 类概述 保存消息列表 ...

  7. android 中文 API (41) —— RatingBar.OnRatingBarChangeListener

    前言 本章内容是 android.widget.RatingBar.OnRatingBarChangeListener,版本为Android 2.2 r1,翻译来自madgoat,欢迎大家访问他的博客 ...

  8. Android 中文API (91) —— GestureDetector

    前言 本章内容是android.view.GestureDetector,版本为Android 2.3 r1,翻译来自"Haiya 胡蝶",再次感谢"Haiya 胡蝶&q ...

  9. Android 中文 API (93) —— BaseExpandableListAdapter

    前言 本章内容是android.widget.BaseExpandableListAdapter,版本为Android 2.3 r1,翻译来自"天涯明月刀",欢迎大家访问他的博客: ...

  10. Android 中文 API (19) —— TwoLineListItem

    一.结构 public class TwoLineListItem extends RelativeLayout java.lang.Object android.view.View android. ...

最新文章

  1. 在CentOS 6.6 64bit上升级GCC到4.8.2版本
  2. Kafka 安装及快速入门
  3. mysql_secure_installation
  4. 网站推广专员浅析如何做好网站推广与运营?
  5. SQL Server中Rollup关键字使用技巧
  6. php _trait,php Trait的使用
  7. 用CSS画一些多边形状
  8. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射
  9. [转]PHP或ASP   中Cookie禁用了,Session还能用吗?
  10. 布林通道参数用20还是26_布林通道(BOLL)策略的投资效果如何?
  11. 拉丁正方形 java_Leetcode 221 最大正方形 动态规划
  12. python下载微信公众号文章_python下载微信公众号相关文章
  13. 【[TJOI2014]上升子序列】
  14. Atitit 调用百度语音识别 目录 1. 建立一个音频app项目,获得appid kersec 1 2. 直接使用JAR包步骤如下: 1 2.1. public class baiduAudio
  15. win7精简_还不升级!Bug最少的win10 LTSC版,极致精简,比win7更快更干净
  16. uc看视频显示服务器有点忙,UC3软件常见问题处理方案
  17. 真香!微软办公环境大揭秘!
  18. 情感分类模型介绍CNN、RNN、LSTM、栈式双向LSTM
  19. 业务架构师如何进阶成长
  20. window.print()手动设置纸张的宽高

热门文章

  1. 写给非技术人员的机器学习指南
  2. 元宇宙加速近眼显示产业化
  3. 段永朝:界面——之内、之外与之间
  4. PNAS:张航课题组揭示人类为何“扭曲”概率信息
  5. 一文读懂什么是数字孪生?
  6. 短信升级为5G消息?三大运营商联合发布的《5G消息白皮书》说了啥?
  7. 2018年中国人工智能100强研究报告
  8. 城市大脑与智慧城市前沿趋势 主题论坛 |未来科技大讲堂 第12期
  9. 报告解读 | 实现智能制造的五大关键环节和四大赋能路径
  10. 通信测试:5G 时代的“卖水人”