如何使用 picaso 库而不是可绘制资源将图像作为 url 传递到数组列表中?

How to pass image as url into arraylist using picaso library instead of drawable resource?

arr_title,arr_description,arr_img是数组list

                arr_title.add(title);
                arr_description.add(description);
                arr_img.add(R.drawable.ic_launcher);

arr_img,这里拍摄的静态图像效果很好。但是,如何从图像 url 动态完成它,以便我从 url 获取图像并将其传递到此 arr_img,而不仅仅是可绘制图像。

我试过,使用 Picaso 库,但我不明白,如何使用它代替 drawable?

这是我的 ArrayAdapter

class MyClass 扩展 ArrayAdapter {

    public MyClass(Context context, int resource, ArrayList img,ArrayList txt,ArrayList img_res) 
    {
        super(context, resource,img);

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        LayoutInflater inf=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
        convertView=inf.inflate(R.layout.post_list_design,null);

        t1=(TextView)convertView.findViewById(R.id.title_list_design);
        t1.setText(arr_title.get(position).toString());

        t2=(TextView)convertView.findViewById(R.id.desc_list_design);
        t2.setText(arr_description.get(position).toString());

        i3=(ImageView)convertView.findViewById(R.id.img_logo);
        i3.setImageResource((Integer)arr_img.get(position));


        return convertView;
    }

}
   Picasso.with(context)
  .load(arr_img.get(position))
   .resize(100, 100)
   .centerCrop()
   .into(i3);

试试这个!

试试这个,最好将图像 URL 存储在一个字符串中,然后在加载方法中传递字符串,而不是直接传递 URL。有用。对我来说效果很好。

final ImageView image = (ImageView) view.findViewById(R.id.imageView1);
            Picasso.with(getApplicationContext()).load("Image Url").into(image);

这是你如何做到的,假设这是 url 列表

static final String BASE = "http://i.imgur.com/";
static final String EXT = ".jpg";
static final String[] URLS = {
  BASE + "CqmBjo5" + EXT, BASE + "zkaAooq" + EXT, BASE + "0gqnEaY" + EXT,
  BASE + "9gbQ7YR" + EXT, BASE + "aFhEEby" + EXT, BASE + "0E2tgV7" + EXT,
  BASE + "P5JLfjk" + EXT, BASE + "nz67a4F" + EXT, BASE + "dFH34N5" + EXT,
  BASE + "FI49ftb" + EXT, BASE + "DvpvklR" + EXT, BASE + "DNKnbG8" + EXT,
  BASE + "yAdbrLp" + EXT, BASE + "55w5Km7" + EXT, BASE + "NIwNTMR" + EXT,
  BASE + "DAl0KB8" + EXT, BASE + "xZLIYFV" + EXT, BASE + "HvTyeh3" + EXT,
  BASE + "Ig9oHCM" + EXT, BASE + "7GUv9qa" + EXT, BASE + "i5vXmXp" + EXT,
  BASE + "glyvuXg" + EXT, BASE + "u6JF6JZ" + EXT, BASE + "ExwR7ap" + EXT,
  BASE + "Q54zMKT" + EXT, BASE + "9t6hLbm" + EXT, BASE + "F8n3Ic6" + EXT,
  BASE + "P5ZRSvT" + EXT, BASE + "jbemFzr" + EXT, BASE + "8B7haIK" + EXT,
  BASE + "aSeTYQr" + EXT, BASE + "OKvWoTh" + EXT, BASE + "zD3gT4Z" + EXT,
  BASE + "z77CaIt" + EXT,
};

并在您的适配器中

 @Override
public View getView(int position, View convertView, ViewGroup parent) 
{
    LayoutInflater inf=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
    convertView=inf.inflate(R.layout.post_list_design,null);

    t1=(TextView)convertView.findViewById(R.id.title_list_design);
    t1.setText(arr_title.get(position).toString());

    t2=(TextView)convertView.findViewById(R.id.desc_list_design);
    t2.setText(arr_description.get(position).toString());

    // Get the image URL for the current position.
    String url = getItem(position);

    i3=(ImageView)convertView.findViewById(R.id.img_logo);


   Picasso.with(context)
        .load(url) 
        .placeholder(R.drawable.placeholder) 
        .error(R.drawable.error) 
        .fit() 
        .tag(context) 
        .into(i3);


    return convertView;
}

}

这是一个非常基本的示例,当然您必须先将图像列表传递给您的适配器。

希望对您有所帮助

你可以查看here详细的例子

最好在数组列表中使用getter setter 方法。 然后将图像设置为字符串。

并在适配器中将每个 URL 加载到图像视图中,例如...

Picasso.with(mFragment.getActivity()).load(mCardList.get(i).getProfilePictureFiles().get(0).getUrl()).into(image).placeholder(R.drawable.ic_launcher);