0
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if(convertView == null){
        convertView = inflater.inflate(resource, null);
    }

    ImageView imageView;
    imageView = (ImageView) convertView.findViewById(R.id.ivGallery);
    for(HospitalModel.Images images: hospitalModelList.get(position).getImagesList()) {
        Glide.with(getContext()).load(images).into(imageView);
    }
    return convertView;
}

// 图像 URL 存储在字符串中ArrayList。我为数组列表定义了getter和setter,但我仍然不知道如何使用get方法ArrayList动态显示图像ListView

4

2 回答 2

0

好的,首先:停止使用 ListView,使用 RecyclerView。

接下来,您需要覆盖 getItemCount()。您可以选择使用 for 循环执行此操作:

int count = 0;

for(HospitalModel.Images images: hospitalModelList.get(position).getImagesList()) {
    count += images.size();
}

或者,更可取的是,将您的模型对象扁平化为该适配器实际关心的内容(即图像 URL 字符串)。像这样的东西:

ArrayList<String> imageUrls = new ArrayList<String>();

for(HospitalModel model : hospitalModelList) {
    imageUrls.addAll(model.getImagesList().getImageUrls());
}

然后将 imageUrls ArrayList 传递给 Adapter。您只需要在模型更新时将其展平(无论是初始化还是更改)。发生这种情况时,请使用适配器上的 notify... 方法。

在那之后,它只是一个简单的Glide.with(getContext()).load(imageUrls.get(position)).into(imageView);内部 getView(或者 onBindViewHolder,如果你使用的是 RecyclerView,我强烈推荐)。

于 2016-12-22T22:01:43.513 回答
0

从 BaseAdapter 扩展类

覆盖 getCount() 方法并在此处返回您需要显示的图像总量。

在使用 Glide only ONE url 加载的 getView 中(删除 for 循环),getView 方法将被调用 N 次以在列表中显示您在 getCount 方法中返回的图像的“总”数量,getView 方法中的位置参数将从 0 运行到 (total - 1)。

您应该将 1 个位置映射到 1 个 url,也许您需要更改访问包含 url 的对象的方式。

于 2016-12-22T21:17:14.240 回答