0

我有自定义适配器,并且我使用了 Universal Image Loader 库。

我的片段2

ArrayList<String> items = new ArrayList<>();
items.add("drawable://" + R.drawable.q);
mGridView = (GridView) view.findViewById(R.id.grid_view);
mGridView.setAdapter(new GridViewAdapter2(getActivity(), items));

GridViewAdapter2

private final LayoutInflater mInflater;
private ArrayList<String> mItems;

public GridViewAdapter2(Context context, ArrayList<String> items) {
    this.mInflater = LayoutInflater.from(context);
    this.mItems = items;
}

@Override
public int getCount() {
    return mItems.size();
}

@Override
public Object getItem(int position) {
    return mItems.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    SquareImageView imageView;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.item_gridview, parent, false);
        imageView = (SquareImageView) convertView.findViewById(R.id.imageView1);
    } else imageView = (SquareImageView) convertView;
    ImageLoader imageLoader = ImageLoader.getInstance();
    imageLoader.init(ImageLoaderConfiguration.createDefault(convertView.getContext()));
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
            .cacheInMemory()
            .cacheOnDisc()
            .build();
    imageLoader.displayImage(mItems.get(position), imageView, options);
    return convertView;
}
...

我的代码有什么问题?他们编译但不显示任何项目。并且不调用 getView();

SquareImageView 是简单的方形图像视图;

4

2 回答 2

0

@Xcihnegn ty,它的工作!

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    GridViewHolder viewHolder;
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.item_gridview, parent, false);
        viewHolder = new GridViewHolder();
        viewHolder.mImageView = (SquareImageView) convertView.findViewById(R.id.imageView1);
        convertView.setTag(viewHolder);
    } else viewHolder = (GridViewHolder) convertView.getTag();
    ImageLoader imageLoader = ImageLoader.getInstance();
    imageLoader.init(ImageLoaderConfiguration.createDefault(convertView.getContext()));
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .imageScaleType(ImageScaleType.IN_SAMPLE_INT)
            .cacheInMemory()
            .cacheOnDisc()
            .build();
    imageLoader.displayImage(mItems.get(position), viewHolder.mImageView, options);
    return convertView;
}

private static class GridViewHolder {

    public SquareImageView mImageView;
}
于 2015-04-24T13:02:50.247 回答
0

1)实例化ImageLoader和创建选项不属于getView(),这应该做一次,最好在构造函数中。

2)来自UIL的文档drawable://

注意:只有当你真的需要它时才使用 drawable://!始终考虑加载可绘制对象的本机方式 - ImageView.setImageResource(...) 而不是使用 ImageLoader。

你确定你绝对需要这样做吗?

3) 看看 aBaseAdapter应该如何实现(GridView 和 ListView 的工作方式几乎相同),例如这个

于 2015-04-24T12:56:32.427 回答