【问题标题】:How to pass image as url into arraylist using picaso library instead of drawable resource?如何使用picaso库而不是可绘制资源将图像作为url传递到arraylist?
【发布时间】:2016-04-20 11:31:19
【问题描述】:

arr_title,arr_description,arr_img 为数组列表

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

arr_img,这里拍摄了一个工作正常的静态图像。但是,如何从图像 url 动态完成它,以便我从 url 获取图像并将其传递到此 arr_img,而不仅仅是可绘制的图像。

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

这是我的 ArrayAdapter

类 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;
    }

}

【问题讨论】:

    标签: android arraylist android-arrayadapter drawable custom-lists


    【解决方案1】:

    试试这个,它更好地将图像 URL 存储在一个字符串中,并在 Load 方法中传递字符串,而不是直接传递 URL。有用。对我来说效果很好。

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

    【讨论】:

    • 对我来说它工作得很好。您遇到什么错误或异常?
    • 需要从 arraylist 角度进行一些修改。解决了
    • 太好了。快乐编码。
    【解决方案2】:
       Picasso.with(context)
      .load(arr_img.get(position))
       .resize(100, 100)
       .centerCrop()
       .into(i3);
    

    试试这个!

    【讨论】:

    • url是否存储在arr_img.get(position)中?
    • 首先,因为,我正在从服务器加载图像,响应需要很长时间,然后,我得到一个没有列表视图的空白屏幕
    • 标题和描述也没有显示?
    • 标题和描述单独可见。但是,当我得到图像视图时,这些文本内容不起作用,整个列表视图消失
    • 可以发网址吗?
    【解决方案3】:

    你可以这样做,假设这是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的详细例子

    【讨论】:

    • 不使用字符串 url 数组,我可以不将 url 传递到 arraylist 吗?
    • 是的。还有其他解决方案吗?或者更好的从 url 获取以节省加载时间?
    【解决方案4】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2012-02-01
      • 2011-09-11
      • 2013-03-24
      • 1970-01-01
      • 2013-07-14
      相关资源
      最近更新 更多