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 近期有 ...
随机推荐
- liunx 根目录介绍
1. /bin binary二进制 存放系统许多可执行程序文件 执行的相关指令,例如ls pwd whoami,后台的支持文件目录 2. /sbin super binary超级的二进制 存放系统许多 ...
- NYOJ 118 修路方案
修路方案 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 南将军率领着许多部队,它们分别驻扎在N个不同的城市里,这些城市分别编号1~N,由于交通不太便利,南将军准备修 ...
- NYOJ 1023 还是回文
还是回文 时间限制:2000 ms | 内存限制:65535 KB 难度:3 描述 判断回文串很简单,把字符串变成回文串也不难.现在我们增加点难度,给出一串字符(全部是小写字母),添加或删除一 ...
- hiho week 143
P1 : hiho密码 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB Description 小Ho根据最近在密码学课上学习 ...
- hdu2043
#include <stdio.h> #include <string.h> char sign[]={'A','B','C','D','E','F','G','H','I', ...
- hdu 1536 sg (dfs实现)
S-Nim Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- PTA 10-排序5 PAT Judge (25分)
题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/677 5-15 PAT Judge (25分) The ranklist of PA ...
- 自动化运维之shell通配符,转义符,和元字符(二)
1 shell通配符 通配符看起来有点象正则表达式语句,但是它与正则表达式不同的,不能相互混淆.把通配符理解为shell特殊代号字符就可. 二.shell元字符 shell除了有通配符之外,由shel ...
- [BZOJ2733] [HNOI2012]永无乡(并查集 + 线段树合并)
传送门 一看到第k大就肯定要想到什么权值线段树,主席树,平衡树之类的 然后就简单了 用并查集判断连通,每个节点建立一颗权值线段树,连通的时候直接合并即可 查询时再二分递归地查找 时间复杂度好像不是很稳 ...
- BZOJ 3747: [POI2015]Kinoman 【线段树】
Description 共有m部电影,编号为1~m,第i部电影的好看值为w[i]. 在n天之中(从1~n编号)每天会放映一部电影,第i天放映的是第f[i]部. 你可以选择l,r(1<=l< ...