我正在尝试使用带有SimpleCursorAdapterViewBinder从数据库获取图像并将其放入我的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()来检查光标是否为空。这也将光标定位在第一个位置。

10-08 03:28