注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

SimpleCursorTreeAdapter  

2010-05-15 20:49:27|  分类: 数据适配器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
public abstract class
SimpleCursorTreeAdapter
extends ResourceCursorTreeAdapter
java.lang.Object
        android.widget.BaseExpandableListAdapter
              android.widget.CursorTreeAdapter
                    android.widget.ResourceCursorTreeAdapter
                          android.widget.SimpleCursorTreeAdapter
Class Overview
    An easy adapter to map columns from a cursor to TextViews or ImageViews defined in an XML file. 
    You can specify which columns you want, 
    which views you want to display the columns, 
    and the XML file that defines the appearance of these views. 
    Separate XML files for child and groups are possible. Binding occurs in two phases.
    First, if a SimpleCursorTreeAdapter.ViewBinder is available, setViewValue(android.view.View, 
    android.database.Cursor, int) is invoked. 
    If the returned value is true, binding has occurred. 
    If the returned value is false and the view to bind is a TextView, setViewText(TextView, String) is invoked. 
    If the returned value is false and the view to bind is an ImageView, setViewImage(ImageView, String) is invoked. 
    If no appropriate binding can be found, an IllegalStateException is thrown.

SimpleCursorTreeAdapter继承于ResourceCursorTreeAdapter。
它为cursor和ExpandableListView提供了连接的桥梁。
它提供把cursor的数据绑定到Group和child的布局文件中的控件的功能。绑定的控件只能是TextView和ImageView

SimpleCursorTreeAdapter的子类:
                无
他实现了来自于ResourceCursorTreeAdapter的两个方法:
bindChildView,bindGroupView
但使用CursorTreeAdapter还需要实现下面一个方法:
Protected Methods  abstract Cursor     getChildrenCursor(Cursor groupCursor)
    Gets the Cursor for the children at the given group.

注:关于cursor的数据到Group和child的布局文件中控件的绑定机制和SimpleCursorAdapter差不多
具体可参考《SimpleCursorAdapter

import android.app.ExpandableListActivity;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.widget.ExpandableListAdapter;
import android.widget.SimpleCursorTreeAdapter;
public class ExpandableListSample2Xml extends ExpandableListActivity {
    private int mGroupIdColumnIndex; 
    private String mPhoneNumberProjection[] = new String[] {
            Phone._ID, Phone.NUMBER
    };
    private ExpandableListAdapter mAdapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Query for people
        Cursor groupCursor = managedQuery(Phone.CONTENT_URI,
                new String[] {Phone._ID, Phone.DISPLAY_NAME}, null, null, null);
        // Cache the ID column index
        mGroupIdColumnIndex = groupCursor.getColumnIndexOrThrow(Phone._ID);
        // Set up our adapter
        mAdapter = new MyExpandableListAdapter(groupCursor,
                this,
                android.R.layout.simple_expandable_list_item_1,//这个是系统的
                android.R.layout.simple_expandable_list_item_1,//这个是系统的
                new String[] {Phone.DISPLAY_NAME}, // Name for group layouts
                new int[] {android.R.id.text1},//用于显示的标签,也是系统的
                new String[] {Phone.NUMBER}, // Number for child layouts
                new int[] {android.R.id.text1});//用于显示的标签,也是系统的
        setListAdapter(mAdapter);
    }
    public class MyExpandableListAdapter extends SimpleCursorTreeAdapter {
        public MyExpandableListAdapter(Cursor cursor, Context context, int groupLayout,
                int childLayout, String[] groupFrom, int[] groupTo, String[] childrenFrom,
                int[] childrenTo) {
            super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childrenFrom,
                    childrenTo);
        }
        //注意二级项数据在这里取得
        @Override
        protected Cursor getChildrenCursor(Cursor groupCursor) {
            // Given the group, we return a cursor for all the children within that group 
            // Return a cursor that points to this contact's phone numbers
            Uri.Builder builder = Phone.CONTENT_URI.buildUpon();
            ContentUris.appendId(builder, groupCursor.getLong(mGroupIdColumnIndex));
            Uri phoneNumbersUri = builder.build();
            // The returned Cursor MUST be managed by us, so we use Activity's helper
            // functionality to manage it for us.
            return managedQuery(phoneNumbersUri, mPhoneNumberProjection, null, null, null);
        }
    }
}
  评论这张
 
阅读(1731)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017