适配器-Adapter

适配器中有方法:
abstract int getViewTypeCount()

Returns the number of types of Views that will be created by getView(int, View, ViewGroup).

其实现的子类此方法返回值都是1.

abstract int getItemViewType(int position)
Get the type of View that will be created by getView(int, View, ViewGroup) for the specified item.

其子类实现方法返回值都为0。

以上两种方法我估计是为了实现多种Item View用的。

 

 

下拉框Spinner的适配器是SpinnerAdapter,其继承自Adapter,要实现的方法较多,可用其子类ArrayAdapter<T>,BaseAdapter等,我一般用BaseAdapter实现。

源代码中BaseAdapter实现了继承自SpinnerAdaper的方法getDropDownView:

    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        return getView(position, convertView, parent);
    }

其返回的是getView的返回值。

根据我的测试发现,getView()方法返回值是用来显示下拉框普通状态时上面的view,getDropDownView返回值为当下拉框被点击时浮在屏幕上的ListView的item View。


CursorAdapter:继承自BaseAdapter

构造方法:CursorAdapter(Context context, Cursor c, int flags) 第三个参数为Cursor.FLAG_REGISTER_CONTENT_OBSERVER或者Cursor.FLAG_AUTO_REQUERY

CursorAdapter(Context context, Cursor c, boolean autoRequery) 第三个参数为true等于上面方法的第二个参数,false为另一个。

CursorAdapter(Context context, Cursor c)    相当于上面方法的第三个参数为true。


继承这个类需要重写两个方法:

View    newView(Context context, Cursor cursor, ViewGroup parent)

这个方法主要用来给每个Item绑定一个View,返回值为绑定的View。

 void    bindView(View view, Context context, Cursor cursor)

这个方法主要是把存在Cursor里的要显示的数据给findViewById并显示要显示的数据。

下面是CursorAdapter的getView方法代码:

    public View getView(int position, View convertView, ViewGroup parent) {
        if (!mDataValid) {
            throw new IllegalStateException("this should only be called when the cursor is valid");
        }
        if (!mCursor.moveToPosition(position)) {
            throw new IllegalStateException("couldn't move cursor to position " + position);
        }
        View v;
        if (convertView == null) {
            v = newView(mContext, mCursor, parent);
        } else {
            v = convertView;
        }
        bindView(v, mContext, mCursor);
        return v;
    }
Cursor      swapCursor(Cursor newCursor)  把当前界面显示的数据换成新的cursor带来的数据,返回值为原来的cursor。

void    changeCursor(Cursor cursor)    等于调用上面的方法后在close原来的Cursor。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值