【问题标题】:BaseAdapter GetView returning NullPointer ExceptionBaseAdapter GetView 返回 NullPointer 异常
【发布时间】:2014-06-25 06:06:54
【问题描述】:

这是我的基本适配器,我正在尝试使用可绘制图像中的图像为 GridView 充气。事实证明,它返回 NullPointerExceptipn。但是当我将 getCount() 返回值更改为 0 时,它不再显示异常,但 gridview 不显示。我已经取出build_list的日志,里面有数据。

public class BuildingListAdapter extends BaseAdapter {

Context context;
ArrayList<Building> build_list = new ArrayList<Building>();

public BuildingListAdapter(Context c, ArrayList<Building> build_list) {
    // TODO Auto-generated constructor stub
    context = c;
    this.build_list.addAll(build_list);
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    return build_list.size();
}

@Override
public Building getItem(int position) {
    // TODO Auto-generated method stub
    return build_list.get(position);
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    Log.v("CheckifRun", "true");
    Building building = this.getItem(position);
    ImageView img_view = new ImageView(convertView.getContext());
    int resID = convertView.getResources().getIdentifier(building.getBuild_img(), "drawable", "com.vapp.yangonuniversity");
    Log.v("resourceID", Integer.toString(resID));
    img_view.setImageResource(resID);
    img_view.setScaleType(ScaleType.CENTER_CROP);
    img_view.setLayoutParams(new GridView.LayoutParams(70, 70));
    return img_view;
}


}

【问题讨论】:

  • 您在哪一行遇到异常?

标签: android gridview adapter


【解决方案1】:

将 getView 方法更改为:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    Log.v("CheckifRun", "true");
    Building building = this.getItem(position);
    ImageView img_view = new ImageView(context);
    int resID = context.getResources().getIdentifier(building.getBuild_img(), "drawable", "com.vapp.yangonuniversity");
    Log.v("resourceID", Integer.toString(resID));
    img_view.setImageResource(resID);
    img_view.setScaleType(ScaleType.CENTER_CROP);
    img_view.setLayoutParams(new GridView.LayoutParams(70, 70));
    return img_view;
}

您需要您的上下文来创建 ImageView 并从 Resource 获取数据

发生了什么变化?

ImageView img_view = new ImageView(context);

int resID = context.getResources().getIdentifier(building.getBuild_img(), "drawable", "com.vapp.yangonuniversity");

更新

你得到了OutOfMemomryException

为什么

当您的应用超出堆中分配的内存时,就会发生 OutofMemory。位图太大,无法放入内存即堆中

如何解决此问题?

你可以在谷歌上搜索到很多相关的问题,首先你可以看到:

Strange out of memory issue while loading an image to a Bitmap object

【讨论】:

  • 它确实修复了错误,但现在显示“内存不足错误”
  • 非常感谢。对我有很大帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多