index -1 requested , with asize of 1?访问行如下:?int type ?blackWhiteCursor.getInt(blackWhiteCurs
index -1 requested , with a size of 1
?
访问行如下:?
int type = ?blackWhiteCursor.getInt(blackWhiteCursor.getColumnIndex(Filters.TYPE));
出现log信息:
?
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at android.database.AbstractCursor.checkPosition(AbstractCursor.java:580)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:214)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:84)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at android.database.CursorWrapper.getInt(CursorWrapper.java:123)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at cn.flyfot.filter.callfilter.RuleService.blockCommonModehandler(RuleService.java:293)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at cn.flyfot.filter.callfilter.RuleService.blockingHandler(RuleService.java:574)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at cn.flyfot.filter.callfilter.PhoneStateListenerReceiver.blockingHandler(PhoneStateListenerReceiver.java:172)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at cn.flyfot.filter.callfilter.PhoneStateListenerReceiver.doReceiver(PhoneStateListenerReceiver.java:57)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at cn.flyfot.filter.callfilter.PhoneStateListenerReceiver.onReceive(PhoneStateListenerReceiver.java:39)
05-06 10:10:06.865: ERROR/AndroidRuntime(4061): ? ? at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810)
解决问题:出现以上错误是由于没有移动游标或是没有查询到需要的数据而移动了游标强制获取某一行数据而导致的,注意查询条件和右边移动。
photoNameIndex = cursor.getColumnIndexOrThrow(Media.DISPLAY_NAME);
photoIDIndex = cursor.getColumnIndexOrThrow(Media._ID);
photoTitleIndex = cursor.getColumnIndexOrThrow(Media.TITLE);
photoSizeIndex = cursor.getColumnIndexOrThrow(Media.SIZE);
// 获取图片总数
totalNum = cursor.getCount();
System.out.println("共有这么多图片"+totalNum);
System.out.println("IDyyy:" + cursor.getInt(photoNameIndex));
// 跳到第一个图片
if (cursor.moveToFirst()) {
setImage();
position.setText("(1/" + totalNum + ")");
}
}
public void onClick(View arg0) {
switch (arg0.getId()) {
// 下一个
case R.id.next:
if (cursor.moveToNext()) {
setImage();
}
break;
// 上一个
case R.id.previous:
if (cursor.moveToPrevious()) {
setImage();
}
break;
case R.id.message:
// Dialog显示详细信息
AlertDialog.Builder builder = new AlertDialog.Builder(
DetailActivity.this);
builder.setTitle("详细信息");
builder.setMessage(Message);
builder.setPositiveButton("关闭",
new android.content.DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
break;
}
}
private void setImage() {
// 获取图片的Name
String name = cursor.getString(photoNameIndex);
// 获取图片的ID
String number = cursor.getString(photoIDIndex);
System.out.println("IDyyy:" + cursor.getInt(photoNameIndex));
// 获取图片的Title
String title = cursor.getString(photoTitleIndex);
// 获取图片的大小
String size = cursor.getString(photoSizeIndex);
// 获取图片存储路径
String path = cursor.getString(photoIndex);
// 为TextView:position赋值(现在所在的位置)
position.setText("(" + number + "/" + totalNum + ")");
Message = "Name:" + name + "\n" + "Number:" + number + "\n" + "ID:"
+ cursor.getInt(photoIDIndex) + "Title:" + title + "\n"
+ "Size:" + size + "\n" + "Path:" + path;
// 通过路径获取图片
Drawable image = Drawable.createFromPath(path);
photo.setImageDrawable(image);
}
}
04-14 20:39:50.060: ERROR/AndroidRuntime(9771): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gallery.detail/com.gallery.detail.DetailActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 39
我想查询所有图片的id,楼主有办法么? 2 楼 chen299135 2012-04-14 这个项目比较急,都愁了很久了。。。