【问题标题】:GridView is trying to reach ArrayList data from out of boundGridView 正在尝试从越界访问 ArrayList 数据
【发布时间】:2018-02-05 11:15:51
【问题描述】:

我正在制作 GridView 小部件,它加载从 ArrayList 拍摄的图像,其中有 40 张。这些对象从内存加载到 gridView 非常好,但是当我向下滚动小部件时,getViewAt 方法想要加载更多对象,这让我进入 OutOfBounds Exception。但是我的方法包含 if 语句,在这种情况下应该返回 null 值,但可能有一些错误,这是我的 GetViewAt 方法:

@Override
public RemoteViews getViewAt(int position) {
    if (position == AdapterView.INVALID_POSITION ||
            cursor == null || !cursor.moveToPosition(position)) {
        return null;
    }
        RemoteViews views = new RemoteViews(ctx.getPackageName(), R.layout.widget_item);
        Bitmap img = resizeBitmapFitXY(250, 150, photos.get(position));
        views.setImageViewBitmap(R.id.imageView, img);
        return views;
}

【问题讨论】:

  • 你能分享你的logcat吗,或者cursorphotos列表中的OutOfBounds Exception在哪里?
  • 就在这一行:Bitmap img = resizeBitmapFitXY(250, 150, photos.get(position));
  • 我猜你的问题在这里photos.get(position)看看答案,如果这对你有帮助,请告诉我

标签: java android arrays gridview


【解决方案1】:

问号

OutOfBounds 异常在哪里

回答

就在这一行:Bitmap img = resizeBitmapFitXY(250, 150, photos.get(position))

解决方案

将此添加到 if 语句中

if (photos == null || photos.size() == 0 || position >= photos.size()){
   return null;
}

【讨论】:

  • 是的,它有效,但很奇怪,因为我已经尝试过类似 position > 39 的东西,这与你的情况基本相同。但是,现在我遇到了另一个奇怪的情况,因为图像旁边的 GridView 显示了无数个带有“正在加载”文本的空白网格单元格。这是图片:dropbox.com/s/xox654wy2duz49y/2018-02-05%2014.19.19.jpg?dl=0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 2021-11-29
相关资源
最近更新 更多