【问题标题】:How do i pass picasso into listView adapter我如何将毕加索传递给 listView 适配器
【发布时间】:2014-09-30 10:16:45
【问题描述】:

我需要将此行传递给列表适配器

Picasso.with(getActivity()).load(imageurl).into(imageOrders);

列表

ListView list= (ListView) getActivity().findViewById(R.id.list);
ListAdapter adapter=new SimpleAdapter(getActivity(),orderList,R.layout.order_usa_row,
new String[]{TAG_PRICE,TAG_TITLE,TAG_PSTATUS,TAG_PRICESYMBOL,TAG_IMAGE},new int[]{R.id.price,R.id.title,R.id.pstatus,R.id.symbol,R.id.imageOrders});

list.setAdapter(adapter);

我是一个初学者,我尝试了很多,但我无法弄清楚,请帮助

【问题讨论】:

    标签: android android-listview picasso


    【解决方案1】:

    您不能将毕加索“传递”给适配器。您必须创建自己的自定义适配器,这并不像听起来那么令人生畏。它甚至可能基于 SimpleAdapter。像这样:

    public class MyAdapter extends SimpleAdapter{
    
       public MyAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to){
          super(context, data, resource, from, to);
    }
    
       public View getView(int position, View convertView, ViewGroup parent){
          // here you let SimpleAdapter built the view normally.
          View v = super.getView(position, convertView, parent);
    
          // Then we get reference for Picasso
          ImageView img = (ImageView) v.getTag();
          if(img == null){
             img = (ImageView) v.findViewById(R.id.imageOrders);
             v.setTag(img); // <<< THIS LINE !!!!
          }
          // get the url from the data you passed to the `Map`
          String url = ((Map)getItem(position)).get(TAG_IMAGE);
          // do Picasso
          Picasso.with(v.getContext()).load(url).into(img);
    
          // return the view
          return v;
       }
    }
    

    那么你可以只使用这个类而不带参数上的图像(但它必须仍然存在于orderList中)。

    ListView list= (ListView) getActivity().findViewById(R.id.list);
    ListAdapter adapter = 
           new MyAdapter(
                    getActivity(),
                    orderList,
                    R.layout.order_usa_row,
                    new String[]{TAG_PRICE,TAG_TITLE,TAG_PSTATUS,TAG_PRICESYMBOL},
                    new int[]{R.id.price,R.id.title,R.id.pstatus,R.id.symbol});
    list.setAdapter(adapter);
    

    【讨论】:

    • 我在我的代码中发现了一个错误的细节,请检查编辑,我用这样的箭头指向:“
    • 我确实使用了你以前的代码,但删除了以 Stringurl 开头的行,并把 load("the string from JSONObject(imagelink)") 和它工作为 1 个列表项,现在我只有一个列表中的项目,将检查然后其他人会将更多列表项目添加到 json 中
    • 那么,我怎样才能在活动中添加所有这些? stackoverflow.com/questions/55860377/…
    猜你喜欢
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    相关资源
    最近更新 更多