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 近期有 ...
随机推荐
- Python内置函数5
Python内置函数5 1.format参考前面字符串方法中的format 2.frozenset([iterable]) iterable -- 可迭代的对象,比如列表.字典.元组等等 返回一个冻结 ...
- 九度oj题目1008:最短路径问题
题目描述: 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. 输入: ...
- php文档php-fpm.conf配置
cat php-fpm.conf|grep -v "^;"|grep -v "^$" [global] pid = run/php-fpm.pid //pi ...
- vue 自定义日历组件
<template> <div class=""> <div class="calendarTraffic" name=" ...
- Python 频繁读取Mysql相关问题
1.需要频繁select大量数据,时间长.消耗内存大,如何解决mysql性能问题? 如果对返回的结果数量没有要求,可以控制返回的数量: cursor.fetchmany(size=1000) 这样是只 ...
- POJ——2251Dungeon Master(三维BFS)
Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 25379 Accepted: 9856 D ...
- 【(好题)组合数+Lucas定理+公式递推(lowbit+滚动数组)+打表找规律】2017多校训练七 HDU 6129 Just do it
http://acm.hdu.edu.cn/showproblem.php?pid=6129 [题意] 对于一个长度为n的序列a,我们可以计算b[i]=a1^a2^......^ai,这样得到序列b ...
- hdu 2713
#include<stdio.h> #include<string.h> int map[151000][2]; int max(int a,int b) { return ...
- AXMLPrinter2.jar反编译xml文件
apk里的AndroidManifest.xml 为二进制文件,可通过AXMLPrinter2.jar包反编译出来 cmd命令行运行一下命令: java -jar AXMLPrinter2.jar A ...
- form:form的一点体会
留个日程吧,明个写,下班了>>