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 近期有 ...
随机推荐
- wordpress需要FTP用户名密码的问题
wordpress安装删除插件需要FTP用户名密码的问题 方法一: 服务器命令操作: 1.在wordpress目录下面wp-config.php末尾加入下面代码: if(is_admin()) { ...
- 九度oj 题目1262:Sequence Construction puzzles(I)_构造全递增序列
题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N(1<=N<=10000). 接下来的一行是N个满足题目描述条件的整 ...
- 快速排序php
<?php /** * Created by PhpStorm. * User: brady.wang * Date: 2017/11/10 * Time: 9:45 */ $arr=array ...
- [luoguP2862] [USACO06JAN]把牛Corral the Cows(二分 + 乱搞)
传送门 可以二分边长 然后另开两个数组,把x从小到大排序,把y从小到大排序 枚举x,可以得到正方形的长 枚举y,看看从这个y开始,往上能够到达多少个点,可以用类似队列来搞 其实发现算法的本质之后,x可 ...
- [HNOI2002]彩票 (搜索+剪枝)
题目描述 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同. 每次抽奖将抽出两个自然数X和Y.如果某人 ...
- noip2017爆炸记——题解&总结&反省(普及组+提高组)
相关链接: noip2018总结 noip2017是我见过的有史以来最坑爹的一场考试了. 今年北京市考点有一个是我们学校,我还恰好被分到了自己学校(还是自己天天上课的那个教室),于是我同时报了普及提高 ...
- NCCloud 指令示例
http://ansrlab.cse.cuhk.edu.hk/software/nccloud/ Implementation of NCCloud in C++ (updated: August 2 ...
- 树状数组求第K大(From CLJ)
; <<log2[n];p;p>>=) if(a[ret+p]<=kth) kth-=a[ret+=p]; return ret;
- 【BZOJ3514】Codechef MARCH14 GERALD07加强版(LCT)
题意:N个点M条边的无向图,q次询问保留图中编号在[l,r]的边的时候图中的联通块个数. 询问加密,强制在线 n,m,q<=200000 题意:RYZ作业 以下转载自hzwer http://h ...
- ZOJ 3811 / 2014 牡丹江赛区网络赛 C. Untrusted Patrol bfs/dfs/并查集
Untrusted Patrol Time Limit: 3 Seconds Memory Limit: 65536 KB ...