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是几,这个数组长度就是几,类型一一对应
Android如果动态改变CursorAdapter Item个数的更多相关文章
- 【Android多屏适配】动态改变Listview item高度
在ListView的Adapter中去直接获取传入View的LayoutParams是会报空指针异常的,唯一的方法是在xml中嵌套布局一层LinearLayout <?xml version=& ...
- Android中动态改变控件的大小的一种方法
在Android中有时候我们需要动态改变控件的大小.有几种办法可以实现 一是在onMeasure中修改尺寸,二是在onLayout中修改位置和尺寸.这个是可以进行位置修改的,onMeasure不行. ...
- Android 如何动态改变Actionbar上的item图标
1.Activity菜单机制 (与dialog类似) Activity有一套机制来实现对菜单的管理,方法如下: 1.public boolean onCreateOptionsMenu(Menu me ...
- Android ListView动态改变Item高度
在adapter的getView方法中进行设置,代码如下 @Override public View getView(int position, View convertView, ViewGroup ...
- [Android疑难杂症]动态改变Background后Padding无效的问题
前言 在Layout中指定好background和padding以后,程序里面动态修改background之后padding就失效了,貌似是一个BUG,这里找到了一篇英文文章,简单翻译分享一下. 声明 ...
- Android中动态改变Listview中字体的颜色
效果如下: 账目显示用的是Listview,要实现的功能为使其根据所在Item是“收入”还是“支出”来把数字设置成绿色或红色 方法是自定义适配器,并重写其中getView()函数,实现如下: //自定 ...
- Android实现动态改变屏幕方向(Landscape & Portrait)
1.AndroidManifest.xml: <activity> android:screenOrientation="portrait" ... 2.xx.java ...
- Android之动态改变控件大小
利用getLayoutParams()方法和setLayoutParams()方法.三步曲:1.首先利用getLayoutParams()方法,获取控件的LayoutParams.eg:LayoutP ...
- 带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变
带你体验Android自定义圆形刻度罗盘 仪表盘 实现指针动态改变 转 https://blog.csdn.net/qq_30993595/article/details/78915115 近期有 ...
随机推荐
- LiveScript 字面量
The LiveScript Book 字面值 Numbers .4是被视为无效的,你必须使用前导0.例如:0.4. 1.20162.12.343.0.4 数字之间的下划线和数值后追加的字母将 ...
- Convolution Fundamental II
Practical Advice Using Open-Source Implementation We have learned a lot of NNs and ConvNets architec ...
- 2017 Multi-University Training Contest - Team 4
日常绝望系列 Questionnaire HDU - 6075 In order to get better results in official ACM/ICPC contests, the te ...
- 九度oj 题目1024:畅通工程
题目描述: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道 ...
- JavaWeb基础(HTML)
代码改变世界 HTML HTML是指超本标记语言,它不是编程语言,而是一种标记语言.标记语言是一套标记标签,HTML使用标记标签来描述网页,用以定义如何在页面上展示信息. 1.HTML标签 HTML标 ...
- 【极角排序+双指针线性扫】2017多校训练七 HDU 6127 Hard challenge
acm.hdu.edu.cn/showproblem.php?pid=6127 [题意] 给定平面直角坐标系中的n个点,这n个点每个点都有一个点权 这n个点两两可以连乘一条线段,定义每条线段的权值为线 ...
- cf682E Alyona and Triangles
You are given n points with integer coordinates on the plane. Points are given in a way such that th ...
- LibieOJ 6165 一道水题 (线性筛)
题目链接 LOJ6165 题目意思其实就是求LCM(1, 2, 3, ..., n) 直接用线性筛求出1到1e8之间的所有质数 然后对于每个质数p,他对答案的贡献为$p^{i}$ 其中$p^{i}$小 ...
- 迁移桌面程序到MS Store(8)——通过APPX下载Win32Component
在上一篇<迁移桌面程序到MS Store(7)——APPX + Service>中,我们提到将desktop application拆分成UI Client+Service两部分.其中UI ...
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...