Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 中文API(86)——ResourceCursorAdapter

Android 中文API(86)——ResourceCursorAdapter

編輯:Android開發實例

前言

  本章內容是android.widget.ResourceCursorAdapter,版本為Android 2.3 r1,翻譯來自"HalZhang",。

 

正文

  一、結構

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);
    }
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved