zoukankan      html  css  js  c++  java
  • Android如果动态改变CursorAdapter Item个数

    //adapter内部类
    private class SearchAdapter extends CursorAdapter { @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { return newAdapterItemView(context, cursor, parent); } @Override public void bindView(View view, Context context, Cursor cursor) { bindAdapterItemView(view, context, cursor); } public int getSuperCount(){ return super.getCount(); } public View getSuperView(int position, View convertView, ViewGroup parent){ return super.getView(position, convertView, parent); } public int getSuperItemViewType(int position) { return super.getItemViewType(position); } public int getSuperViewTypeCount() { return super.getViewTypeCount(); } public long getSuperItemId(int position) { return super.getItemId(position); } @Override public int getCount() { return adapterGetCount(); } @Override public View getView(int position, View convertView, ViewGroup parent) { return adapterGetView(position, convertView, parent); } @Override public int getItemViewType(int position) { return adapterGetItemViewType(position); } @Override public int getViewTypeCount() { return adapterGetViewTypeCount(); } @Override public long getItemId(int position) { return adapterGetItemId(position); } }

    外部供重写的方法:

        protected int adapterGetCount(){
            return mAdapter.getSuperCount();
        }
        protected View adapterGetView(int position, View convertView, ViewGroup parent){
            return mAdapter.getSuperView(position, convertView, parent);
        }
        protected int adapterGetItemViewType(int position) {
            return mAdapter.getSuperItemViewType(position);
        }
        protected int adapterGetViewTypeCount() {
            return mAdapter.getSuperViewTypeCount();
        }
        protected long adapterGetItemId(int position) {
            return mAdapter.getSuperItemId(position);
        }

    //子类实现部分:

    需要改变的偏移量

     private int getPositionOffset() {
    return mDefaultOffset;        
     }

    重写方法:

    @Override
        protected int adapterGetCount() {
    
            return super.adapterGetCount() + getPositionOffset();
        }
    
        @Override
        protected View adapterGetView(int position, View convertView, ViewGroup parent) {
    
            if (position < getPositionOffset()) {
                int type = mDefaultType[position];
                switch (type) {
                    case ITEM_TYPE_1:
                        return getView1();
                    case ITEM_TYPE_2:
                        return getView2();
                    case ITEM_TYPE_3:
                        return getView3();
                    case ITEM_TYPE_4:
                        return getView4();
                    default:
                        break;
                }
            }
            return super.adapterGetView(position - getBookmarkPositionOffset(), convertView, parent);
        }
    @Override
        protected int adapterGetItemViewType(int position) {
    
            if (position < getPositionOffset()) {
                return mDefaultType[position];
            }
            return getItemViewType(position - getPositionOffset());
        }
    
        @Override
        protected int adapterGetViewTypeCount() {
    
            return ITEM_TYPE_COUNT + getPositionOffset();
        }
    
        @Override
        public long adapterGetItemId(int position) {
    
            if (position < getPositionOffset()) {
                int type = mDefaultType[position];
                switch (type) {
                    case ITEM_TYPE_1:
                        return -1;
                    case ITEM_TYPE_2:
                        return  -2;
                    case ITEM_TYPE_3:
                        return  -3;
                    case ITEM_TYPE_4:
                        return -4;
                    default:
                        break;
                }
            }
            return super.adapterGetItemId(position - getPositionOffset());
        }
    
      protected static final int ITEM_TYPE_1 = -101;
        protected static final int ITEM_TYPE_2 = -102;
        protected static final int ITEM_TYPE_3 = -103;
        protected static final int ITEM_TYPE_4 = -104;
    
        private static int mDefaultOffset;
        private static int[] mDefaultType = null;//这个需要初始化,mDefaultOffset是几,这个数组长度就是几,类型一一对应
    
    
  • 相关阅读:
    数据库之01-数据库概述
    Bootstrap框架
    jQuery
    补充:html速查表
    BOM,DOM相关案例
    BOM,DOM
    函数,词法分析,内置对象和方法
    前端 之 JaveScript 基础语法: 数据类型; 运算符; 数据转换; 流程控制; 常用内置对象;
    favicon.ioc使用以及注意事项
    redux-undo
  • 原文地址:https://www.cnblogs.com/lchd/p/3543404.html
Copyright © 2011-2022 走看看