天天看點

Android 中文API(86)——ResourceCursorAdapter

前言

聲明

  歡迎轉載,但請保留文章原始出處:) 

正文

  一、結構

public abstract class resourcecursoradapter extends cursoradapter

java.lang.object

         android.widget.baseadapter

                   android.widget.cursoradapter

                            android.widget.resourcecursoradapter

直接子類

         simplecursoradapter

  二、概述

    這是一個簡單的擴充卡,通過指定一個定義了視圖ui的xml檔案來建立視圖。

  三、構造函數

         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檔案建立視圖

                   參數

                   參見

         public void setdropdownviewresource (int dropdownlayout)

         設定下拉視圖相應的布局資源

                            dropdownlayout     用于建立下拉視圖的布局資源

         public void setviewresource (int layout)

  設定清單項視圖相應的布局資源

                            layout       用于建立清單項視圖的布局資源

  五、補充 

  文章精選

    代碼示例(apidemos\src\com\example\android\apis\app\quickcontactsdemo.java)

Android 中文API(86)——ResourceCursorAdapter

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));

        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

<a></a>

轉載:http://www.cnblogs.com/over140/archive/2011/01/11/1932546.html

繼續閱讀