实现毕加索没有加载图像

时间:2015-04-06 11:44:15

标签: android image sqlite

我决定实施Universal Image Loader之后,因为我实施了一种将URL转换为Drawable的方法,但由于我不知道有多少图像会返回{{3}} {{3}} 1}}查询我决定实现SQLite ... 事情是我现在被困住了,因为我认为我做了Image Loader所说的所有事情,但是当我加载GitHub时它保持白色并且从不加载。

在我的Image我已将Adapter class的行改为:

drawable

它有效,beucase它会向我显示ic_launcher图标......但永远不会改变为真实图像。

在我的课上,我获取数据(在我的OnCreate()上):

Picasso.with(context)
            .load(Uri.parse(String.valueOf(item.icon)))
            .resize(180, 180)
            .placeholder(R.drawable.ic_launcher).into(viewHolder.ivIcon);

然后我创建了一个内部类,我将数据提取到我的 new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } new MyAsyncTask().execute(); getActivity().runOnUiThread(new Runnable() { @Override public void run() { // progress.dismiss(); } }); } }).start(); } ...但它不起作用。我不知道如果我将这些方法改为ListView,我是否要删除这些方法。

Picasso

private class MyAsyncTask extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { } @Override protected Void doInBackground(Void... params) { Conexion = new MarketSQLite(getActivity(), "market", null, 1); mItems = new ArrayList<ListViewItem>(); db = Conexion.getReadableDatabase(); Cursor c; c = db.rawQuery("Select NOM_OFER,PREU_OFERTA,DATA_F,FOTO,PERCENTDESCOMPTE from T_OFERTA", null); c.moveToFirst(); if (c != null) { do { for (int i = 0; i < c.getColumnCount(); i++) { Title = c.getString((c.getColumnIndex("NOM_OFER"))); Preu = c.getColumnIndex("PREU_OFERTA"); percent = c.getString((c.getColumnIndex("PERCENTDESCOMPTE"))); data_f = c.getString((c.getColumnIndex("DATA_F"))); URLTest = c.getString((c.getColumnIndex("FOTO"))); FOTO = Imagehandler(URLTest); Log.e("", "" + c.getString(i)); // initialize and set the list adapter // Toast.makeText(getActivity(), "Title" + Title + "Preu" + Preu + "Percent" + percent + "Cheese is " + data_f, Toast.LENGTH_LONG).show(); } mItems.add(new ListViewItem(FOTO, Title, Preu.toString(), percent, data_f)); }while (c.moveToNext()); } c.close(); return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); myAdapter = new ListViewDemoAdapter(getActivity(), mItems); setListAdapter(myAdapter); } } 是我在此之前创建的方法:

ImageHandler

我不知道为什么不在我的ListView上加载图像,如果它显示所有其余数据......

2 个答案:

答案 0 :(得分:2)

你只需要在你的ImageHandler方法中添加你的毕加索代码片段,而不是别的 -

Picasso.with(context)
            .load(url))
            .resize(180, 180)
            .placeholder(R.drawable.ic_launcher).into(your_imageview);

您不需要下载图像或制作位图或将其转换为drawable以从url加载。希望这可以帮助你。

答案 1 :(得分:2)

而不是Drawable,尝试在适配器中获取url字符串,如

更改
public ListViewItem(Drawable icon, String title, String precio, String descuento, String date) {
    this.icon = icon;
    this.title = title;
    this.precio = precio;
    this.descuento = descuento;
    this.date = date;
}

    public ListViewItem(String icon_url, String title, String precio, String descuento, String date) {
        this.icon_url = icon_url;
        this.title = title;
        this.precio = precio;
        this.descuento = descuento;
        this.date = date;
    }

并使用Picasso来加载你的imageview -

Picasso.with(context)
            .load(icon_url))
            .resize(180, 180)
            .placeholder(R.drawable.ic_launcher).into(viewHolder.ivIcon);

1)你的ListViewItem类应该是这样的 -

public class ListViewItem {
    public final String icon;       // the drawable for the ListView item ImageView
    public final String title;       // the text for the ListView item title
    public final String precio;      // the price for the ListView item
    public final String descuento;   // the price for the discount for the ListView item
    public final String date;        //the date for the sale for the ListView item

     // the text for the ListView item description

    public ListViewItem(String icon_url, String title, String precio, String descuento, String date) {
        this.icon = icon_url;
        this.title = title;
        this.precio = precio;
        this.descuento = descuento;
        this.date = date;
    }
}

2)ListViewDemoAdapterClass

public class ListViewDemoAdapter extends ArrayAdapter<ListViewItem> {
Context context;
    public ListViewDemoAdapter(Context context, List<ListViewItem> items) {
        super(context, R.layout.listview_item, items);
        this.context = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;

        if(convertView == null) {
            // inflate the GridView item layout
            LayoutInflater inflater = LayoutInflater.from(getContext());
            convertView = inflater.inflate(R.layout.listview_item, parent, false);

            // initialize the view holder
            viewHolder = new ViewHolder();
            viewHolder.ivIcon = (ImageView) convertView.findViewById(R.id.ivIcon);
            viewHolder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);
            viewHolder.tvPrice = (TextView) convertView.findViewById(R.id.tvPrice);
            viewHolder.tvDiscount = (TextView) convertView.findViewById(R.id.tvDiscount);
            viewHolder.tvDate = (TextView) convertView.findViewById(R.id.tvDatas);
            convertView.setTag(viewHolder);
        } else {
            // recycle the already inflated view
            viewHolder = (ViewHolder) convertView.getTag();
        }

        // update the item view
        ListViewItem item = getItem(position);
        Picasso.with(context)
                .load(item.icon)
                .resize(180, 180)
                .placeholder(R.drawable.ic_launcher).into(viewHolder.ivIcon);
        viewHolder.tvTitle.setText(item.title);
        viewHolder.tvDiscount.setText(item.descuento);
        viewHolder.tvPrice.setText(item.precio);
        viewHolder.tvDate.setText(item.date);

        return convertView;
    }


    private static class ViewHolder {
        ImageView ivIcon;
        TextView tvTitle;
        TextView tvDiscount;
        TextView tvPrice;
        TextView tvDate;
    }
}
  1. ListFragment代码,只需添加此

      Cursor c; 
    
     c = db.rawQuery("Select 
    NOM_OFER,PREU_OFERTA,DATA_F,FOTO,PERCENTDESCOMPTE from T_OFERTA", null); 
    c.moveToFirst(); 
    if (c != null) { 
    do { 
    for (int i = 0; i < c.getColumnCount(); i++) { 
    Title = c.getString((c.getColumnIndex("NOM_OFER"))); 
    Preu = c.getColumnIndex("PREU_OFERTA"); 
    percent = c.getString((c.getColumnIndex("PERCENTDESCOMPTE"))); 
    data_f = c.getString((c.getColumnIndex("DATA_F"))); 
    URLTest = c.getString((c.getColumnIndex("FOTO")));
    
  2. 希望这会有所帮助:)

相关问题