Android 中文API(86)——ResourceCursorAdapter

简介:

一、结构

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

五、补充 

  文章精选

         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,如需转载请自行联系原博主。


目录
相关文章
|
Android开发
Android 11 修改libcore update-api 遇到的问题
Android 11 修改libcore update-api 遇到的问题
617 1
|
9月前
|
存储 机器学习/深度学习 API
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
1470 31
Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
650 0
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
515 2
|
SQL API Android开发
Android API:Activity.managedQuery()
Android API:Activity.managedQuery()
216 2
|
API Android开发
Android Framework增加API 报错 Missing nullability on parameter
Android Framework增加API 报错 Missing nullability on parameter
855 1
|
Java Linux API
微信API:探究Android平台下Hook技术的比较与应用场景分析
微信API:探究Android平台下Hook技术的比较与应用场景分析
|
API 定位技术 开发工具
Android Studio2021.1.1 高德地图api调用这一篇就够了
Android Studio2021.1.1 高德地图api调用这一篇就够了
|
API Android开发 前端开发
|
6月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1154 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章