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是几,这个数组长度就是几,类型一一对应
    
    
  • 相关阅读:
    点击子窗体给父窗体上的对象赋值
    框架使用及规范参考
    像Google日历一样的日程管理
    TreeView 和 Menu 的用法
    甘特图-svg版 支持客户端事件
    js获取DropDownList的选择项
    GridView,Repeater分页控件:WebPager(开源)
    TextBox 禁止客户端输入 前台通过JS赋值 并在后台获取
    对象实体 参考标准
    以编程方式控制ScriptManager
  • 原文地址:https://www.cnblogs.com/lchd/p/3543404.html
Copyright © 2011-2022 走看看