Android ResourcCursorAdapter的使用

转载 2015年11月20日 16:12:14

关于 ResourceCursorAdapter的使用,和我上一篇的CursorAdapter的使用没有太大的区别,这里我就用拿来主义了。

正文

  一、结构

public abstract class ResourceCursorAdapter extends CursorAdapter

        

java.lang.Object

         android.widget.BaseAdapter

                   android.widget.CursorAdapter

                            android.widget.ResourceCursorAdapter

 

直接子类

         SimpleCursorAdapter

 

  二、概述

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

 

  三、构造函数

         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       用于创建列表项视图的布局资源

示例:

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之-----GridView使用的方法总结

Android之-----GridView使用的方法总结     GridView和ListView是Android里面比较常用的多控件布局,其使用方法上篇博客写过的ListViewf非常相似都要用...
  • zhangdongxuan
  • zhangdongxuan
  • 2015年07月17日 10:51
  • 9801

Android开发之Service与IntentService的区别与使用场景

转载自:点击打开链接 Service Service 是长期运行在后台的应用程序组件。 Service 不是一个单独的进程,它和应用程序在同一个进程中,Service 也不是一个线程...
  • lyj1005353553
  • lyj1005353553
  • 2016年12月14日 21:50
  • 1946

android中Service使用详解

service用于长期在后台处理任务,而不需要对用户可见。 service有2种基本的启动方式: startService():使用这种方式,来进行单一的任务,不需要返回结果给调用者 bindServ...
  • baidu_26994091
  • baidu_26994091
  • 2016年06月29日 01:51
  • 11733

传智播客_Andorid_20天精通Android开发视频_第11天视频_视频_18_创建对话框使用上下文必须用activity

  • 2018年01月09日 15:07
  • 20.76MB
  • 下载

传智播客_Andorid_20天精通Android开发视频_第13天视频_视频_04_使用内容解析者访问数据

  • 2018年01月09日 15:07
  • 39.17MB
  • 下载

传智播客_Andorid_20天精通Android开发视频_第13天视频_视频_04_使用内容解析者访问数据

  • 2018年01月09日 15:10
  • 39.17MB
  • 下载

Android C++高级编程使用NDK

  • 2018年01月09日 11:32
  • 82.76MB
  • 下载

Android studio使用Lottie实现动画

  • 2017年10月10日 16:29
  • 1.28MB
  • 下载

Http(get)请求数据Android Studio使用HttpClient

  • 2017年10月08日 19:33
  • 20.5MB
  • 下载

android picasso使用demo

  • 2017年10月06日 18:11
  • 24.42MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android ResourcCursorAdapter的使用
举报原因:
原因补充:

(最多只允许输入30个字)