android sqlist中游标下标越界问题解决方案

在使用android的sqlist时,出现了以下错误

android.database.CursorIndexOutOfBoundsException: Index 14 requested, with a size of 14

经过排除,确定了错误位置

错误代码为

public ArrayList<receiveContext> query(String table_name,String[] arg)
	{
		SQLiteDatabase db=getWritableDatabase();
		Cursor c = db.query(table_name,null,poster+"=?",arg,null,null,updateTime,null);//查询并获得游标
		ArrayList<receiveContext> l=new ArrayList<receiveContext>();
		if(c.moveToFirst())
		{//判断游标是否为空

		    for(int i=0;i<c.getCount();i++){
		        c.moveToPosition(i);//正确语句
		        //c.move(i);  //错误语句
		        
		        String getContext="";
		        int getStyle = 0;
		        String getTime="";
		        
		        getContext= c.getString(c.getColumnIndex(context));
		        getStyle =c.getInt(c.getColumnIndex(style));
		        getTime = c.getString(c.getColumnIndex(updateTime));
		        receiveContext rc=new receiveContext(getContext,getStyle,getTime);
		        l.add(rc);
		    }
		}
		c.close();
		db.close();
		return l;
	}

这是我写的一个数据库查询的方法,越界原因是使用了方法c.move(i);这个方法我估计(有待考证)应该是当前指针+i,所以会导致越界。正确的方法应该是

c.moveToPosition(i);

这是跳到第i个位置。

时间: 2024-12-19 22:16:56

android sqlist中游标下标越界问题解决方案的相关文章

Android Studio中安装Genymotion插件解决方案

之前讨论了在Eclipse中安装Genymotion插件,感觉还是比较麻烦的.现在我们要在Android Studio中安装Genymotion插件,比在Eclipse中方便多了.前提是你已经在电脑上安装了Genymotion.鉴于Eclipse的经验,在这里我们不介绍离线安装jar包的方式,也不推荐,现在而是使用在线的方式.具体步骤如下: (1)在Android Studio中选择File-->Settings,在出现的对话框左侧选择Plugins,然后在下方选择"Browser rep

android URL中文和空格会报错解决方案

url = URLEncoder.encode(urlStr,"utf-8").replaceAll("\\+", "%20"); //encode会将空格替换为+号,所有要讲+号替换为空格的转义%20 url = url.replaceAll("%3A", ":").replaceAll("%2F", "/"); //encode会把url里的/和:这2个符号变成%

Android Studio中编码(乱码)问题的解决方案

在Android Studio中,无论是自己新建的项目,还是import的项目,亦或是从网络返回的数据,只要其中涉及中文,极有可能会出现乱码问题,导致在手机界面上显示达不到预期的效果.如下所示: . 解决方案如下: (1)打开FIle-->Settings-->Editor-->File Encodings,会出现以下界面: . 一般只要设置上方的IDE Encoding和Project Encoding.前者指IDE的编码方式,后者指你的Project的编码.一般都可以设置为UTF-8

在Android library中不能使用switch-case语句访问资源ID的原因分析及解决方案

转:http://www.jianshu.com/p/89687f618837 原因分析   当我们在Android依赖库中使用switch-case语句访问资源ID时会报如下图所示的错误,报的错误是case分支后面跟的参数必须是常数,换句话说出现这个问题的原因是Android library中生成的R.java中的资源ID不是常数: 打开library中的R.java,发现确实如此,每一个资源ID都没有被声明为final: 但是当你打开你的主工程,在onClick.onItemClick等各种

Android查缺补漏(View篇)--自定义 View 中 wrap_content 无效的解决方案

自定义 View 中 wrap_content 无效的解决方案 做过自定义 View 的童鞋都会发现,直接继承 View 的自定义控件需要重写 onMeasure() 方法,并设置 wrap_content 时的自身大小,否在在布局文件中对自定义控件在设置大小时,wrap_content 将等同于 match_parent. 其实在 Android 中自带的控件中,也都对 onMeasure() 方法进行了重写,对于 wrap_content 等情况做了特殊处理,在 wrap_content 时

Android开发错误——Android Studio中遇到过的错误问题与解决方案汇总

(1)编译时发生 解决方法: 1.在最外层的Gradle中,删除如下的语句 (2)编译时发生 解决方法: 1.在最外层的Gradle中,删除如下的语句 (3)编译时发生 解决方法: 1.你的项目中存在中文命名,将项目中对应的中文命名改为英文即可 (4)编译时发生 解决方法: 1.你的项目中res\drawable下存在大写字母,将项目中对应的大写字母改为小写字母即可 (5)在Aidl文件进行编译时发生 解决方法: 1.项目的编译版本和编译工具的版本不一致,右键项目 open Moudle Set

Android Studio 中 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task &#39;:compileDebugAidl&#39;.的问题解答

Android Studio 中 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileDebugAidl'.的问题解答 完整的问题提示 Gradle: FAILURE:Build failed with an exception.*What went wrong:Execution failed for task ':compileDebugAidl'.>No

Android开发中遇到的requestFeature() must be called before adding content异常

缘起 上一篇博文中讲到了几种实现全屏显示Activity内容的方法.然而实际在实现中发现了一些问题,在本篇博文中进行总结下.首先交代一下开发环境,本人使用的是Android Studio 1.5.1,因此使用Eclipse ADT开发或者低版本的SDK的时候可能不会碰到这个问题.首先看onCreate()方法中的实现代码: 1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(sav

如何在Android Gradle中添加原生so文件依赖

@author ASCE1885的 Github 简书 微博 CSDN 原文链接 背景 几个月前,基于Google的LevelDB,我为Android平台写了一个名为SnappyDB的键值数据库(NoSQL). 由于它使用到了原生C++代码,因此最终生成的文件除了Jars包还有so文件. 通过Maven仓库发布我们的函数库没有什么问题(只要你通过繁琐的发布流程),maven-android-plugin可以帮助我们包含共享库.Maven依赖规则使得我们可以指定想要获取的ABI(不同的CPU架构)