如何从 url 中获取图像到 arrayList

外径

我试图显示从 url 读取的图像,它们不仅仅是一个图像,所以我不得不将它们全部放在一个数组列表中,然后使图像显示在 gridview 中,由于某种原因它没有显示任何内容, gridview 完全空白,请告知我做错了什么。

BottomSheetDialog_Smiles.java

Communicator.getInstance().on("subscribe start", new Emitter.Listener() {

        @Override
        public void call(Object... args) {
            try{

JSONDictionary response = (JSONDictionary) args[0];
String str = response.get("emojiPack").toString();
JSONArray emojies = new JSONArray(str);

for(int i=0;i<emojies.length();i++){

JSONObject response2 = (JSONObject) 
emojies.getJSONObject(i);

emojiModel = new EmojiModel((String) response2.get("urlFile"));
emojiUrl = emojiModel.getEmojiFile();
Picasso.with(getApplicationContext()).load(emojiUrl);
JSONDictionary t = JSONDictionary.fromString(response2.toString());
emojiModel.init(t);
emojieModels.add(new EmojiModel(emojiUrl));
                }

EmojiAdapter emojiAdapter = new EmojiAdapter(getApplicationContext(), 
emojieModels);
gridView2.setAdapter(emojiAdapter);


            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    });
    EmojiAdapter emojiAdapter = new EmojiAdapter(getApplicationContext(), 
    emojieModels);
    gridView2.setAdapter(emojiAdapter);

EmojiAdapter.java

public class EmojiAdapter extends ArrayAdapter<EmojiModel> {

Context context;
ArrayList<EmojiModel> list = new ArrayList<>();

public EmojiAdapter(Context context,ArrayList<EmojiModel> list) {
    super(context, R.layout.smiles_items_layout, list);
    this.context = context;
    this.list = list;
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater o = 
(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = o.inflate(R.layout.gifts_layout_2, parent , false);

    ImageView imageView = (ImageView) v.findViewById(R.id.smile_image_view);


imageView.setImageResource(Integer.parseInt((list.get(position)).urlFile));

    return v;
    }
}

EmojiModel.Java

public class EmojiModel {
private int id;
private int price;
public String urlFile;

public EmojiModel(String urlFile) {
    this.urlFile=urlFile;
}

public String getEmojiFile() {
    return urlFile;
}

public void init(JSONDictionary data){
    try{
        urlFile = (String) data.get("urlFile");
        id = Integer.parseInt((String) data.get("id"));
        price = Integer.parseInt((String) data.get("price"));

    }catch(Exception e){
        e.printStackTrace();
    }
}
}
普亚·海达里

显然这行代码行不通:

imageView.setImageResource(Integer.parseInt((list.get(position)).urlFile));

而不是仅使用 glide 或 piccaso 加载图片。首先将此行添加到您的 gradle 文件中:

  implementation 'com.github.bumptech.glide:glide:4.5.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.5.0'

然后代替上面的行,只需写: Glide.with(context).load(list.get(position)).urlFile).into(imageView);

毕加索图书馆也很相似


也以这种方式更改您的适配器:

public class EmojiAdapter extends BaseAdapter {

    Context context;
    ArrayList<EmojiModel> list = new ArrayList<>();

    public EmojiAdapter(Context context,ArrayList<EmojiModel> list) {
        super(context, R.layout.smiles_items_layout, list);
        this.context = context;
        this.list = list;
    }
    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater o =
                (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View v = o.inflate(R.layout.gifts_layout_2, parent , false);

        ImageView imageView = (ImageView) v.findViewById(R.id.smile_image_view);


        imageView.setImageResource(Integer.parseInt((list.get(position)).urlFile));

        return v;
    }

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章