Android 中文API(86)——ResourceCursorAdapter
正文 一、结构 public abstract classResourceCursorAdapterextendsCursorAdapter java.lang.Object android.widget.BaseAdapter android.widget.CursorAdapter android.widget.ResourceCursorAdapter 直接子类 SimpleCursorAdapter 二、概述 这是一个简单的适配器,通过指定一个定义了视图UI的XML文件来创建视图。 三、构造函数 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 ); } } 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582425,如需转载请自行联系原作者