我正在尝试使用带有SimpleCursorAdapter
的ViewBinder
从数据库获取图像并将其放入我的ListView
项目 View 。这是我的代码:
private void setUpViews() {
mNewsView = (ListView) findViewById(R.id.news_list);
Cursor cursor = getNews();
SimpleCursorAdapter curAdapter = new SimpleCursorAdapter(
getApplicationContext(), R.layout.cursor_item, cursor,
new String[] { "title", "content", "image" },
new int[] { R.id.cursor_title, R.id.cursor_content,
R.id.news_image });
ViewBinder viewBinder = new ViewBinder() {
public boolean setViewValue(View view, Cursor cursor,
int columnIndex) {
ImageView image = (ImageView) view;
byte[] byteArr = cursor.getBlob(columnIndex);
image.setImageBitmap(BitmapFactory.decodeByteArray(byteArr, 0, byteArr.length));
return true;
}
};
ImageView image = (ImageView) findViewById(R.id.news_image);
viewBinder.setViewValue(image, cursor, cursor.getColumnIndex("image"));
curAdapter.setViewBinder(viewBinder);
mNewsView.setAdapter(curAdapter);
}
我得到了:
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 60
在执行
byte[] byteArr = cursor.getBlob(columnIndex);
时。有人知道我在做什么错吗? 最佳答案
我认为尚未调用cursor.moveToFirst()
,因此光标正在抛出android.database.CursorIndexOutOfBoundsException.
在使用cursor
之前,应始终通过调用cursor.moveToFirst()
来检查光标是否为空。这也将光标定位在第一个位置。