前言

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

声明

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

    博客园:http://www.cnblogs.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

  二、概述

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

  三、构造函数

  publicResourceCursorAdapter(Contextcontext, int layout,Cursorc)

构造函数

参数

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

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

c 获取数据的游标

publicResourceCursorAdapter(Contextcontext,int layout,Cursorc, boolean autoRequery)

    构造函数

   参数

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

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

c 获取数据的游标

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

  四、公共方法

publicViewnewDropDownView(Contextcontext,Cursorcursor,ViewGroupparent)

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

参数

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

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

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

返回值

新创建的视图

publicViewnewView(Contextcontext,Cursorcursor,ViewGroupparent)

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

参数

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

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

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

返回值

新创建的视图

参见

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

public voidsetDropDownViewResource(int dropDownLayout)

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

参数

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

public voidsetViewResource(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(BundlesavedInstanceState){
super .onCreate(savedInstanceState);
Stringselect
= " (( " + Contacts.DISPLAY_NAME + " NOTNULL)AND( "
+ Contacts.HAS_PHONE_NUMBER + " =1)AND( "
+ Contacts.DISPLAY_NAME + " !='')) " ;
Cursorc
=
getContentResolver().query(Contacts.CONTENT_URI,CONTACTS_SUMMARY_PROJECTION,select,
null ,Contacts.DISPLAY_NAME + " COLLATELOCALIZEDASC " );
startManagingCursor(c);
ContactListItemAdapteradapter
= new ContactListItemAdapter( this ,R.layout.quick_contacts,c);
setListAdapter(adapter);

}

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

@Override
public void bindView(Viewview,Contextcontext,Cursorcursor){
final ContactListItemCachecache = (ContactListItemCache)view.getTag();
TextViewnameView
= cache.nameView;
QuickContactBadgephotoView
= cache.photoView;
// Setthename
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 StringlookupKey = cursor.getString(SUMMARY_LOOKUP_KEY);
cache.photoView.assignContactUri(Contacts.getLookupUri(contactId,lookupKey));
}

@Override
public ViewnewView(Contextcontext,Cursorcursor,ViewGroupparent){
Viewview
= super .newView(context,cursor,parent);
ContactListItemCachecache
= 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 TextViewnameView;
public QuickContactBadgephotoView;
public CharArrayBuffernameBuffer = new CharArrayBuffer( 128 );
}
}


更多相关文章

  1. android用户界面-组件Widget-画廊视图Gallery
  2. Android(安卓)下拉刷新,非常强大的下拉刷新功能
  3. android 中文api (62) —— ViewSwitcher.ViewFactory
  4. Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
  5. android api 中文 (74)—— AdapterView.AdapterContextMenuInfo
  6. Android(安卓)如何开发 Bottom Navigation 风格
  7. Android(安卓)之 下拉框(Spinner)的简单使用
  8. android实践项目一实现简单的验证码和spinner下拉选项效果
  9. Android(安卓)自定义组件 方法篇

随机推荐

  1. Android四大核心——Activity
  2. [gitbook] Android框架分析系列之Android
  3. Android执行linux外部命令
  4. Android如何快速入门
  5. Android(安卓)GestureDetector手势监听
  6. 去除警告 Android(安卓)NDK: WARNING: AP
  7. 解决 Android(安卓)模拟器 无法上网问题
  8. Android系统源码极速搜索引擎(OpenGrok)
  9. Android开发环境的安装 Eclipse
  10. Android(安卓)好用插件 / 实用依赖(及时