【问题标题】:Picasso not loading images Android (with Parse)Picasso 不加载图像 Android(使用 Parse)
【发布时间】:2014-03-21 22:53:54
【问题描述】:

图片未加载。当我使用 ParseQueryAdapter 时它正在工作,但我认为这会使列表视图更加流畅。以前我也尝试过注释掉的代码,但这也不令人讨厌。这是我使用 Picasso 的 BaseAdapter 代码:

public class PicassoAdapter extends BaseAdapter {

    private Context myContext;
    LayoutInflater inflater;
    ParseFile p;
    String url;
    List<String> s = new ArrayList<String>();
    List<ParseFile> mpl;

    static class ViewHolder{
        ImageView i;
    }

    public PicassoAdapter(Context c,List<ParseFile> pl){
        this.myContext = c;
        inflater = LayoutInflater.from(this.myContext);
        this.mpl = pl;

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return this.mpl.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return this.mpl.get(position);
    }

    @Override
    public long getItemId(int id) {
        // TODO Auto-generated method stub
        return id;
    }

    @Override
    public View getView(int position, View v, ViewGroup parent) {
        final ViewHolder viewHolder;
        p = (ParseFile)getItem(position);
        // TODO Auto-generated method stub
        if(v == null){
            v = inflater.inflate(R.layout.adapter_item3, null);
            viewHolder = new ViewHolder();
            viewHolder.i = (ImageView)v.findViewById(R.id.snyp_image_new);
            v.setTag(viewHolder);
        }
        else{
            viewHolder = (ViewHolder)v.getTag();
        }



        /*ParseQuery<ParseObject> query = ParseQuery.getQuery("Photo");
        query.whereEqualTo("username", ParseUser.getCurrentUser().getUsername());
        query.findInBackground(new FindCallback<ParseObject>(){

            @Override
            public void done(List<ParseObject> objs, ParseException e) {
                // TODO Auto-generated method stub
                if(objs!=null){
                    for(int i = 0; i < objs.size();i++){
                        p = objs.get(i).getParseFile("photo");
                        url = p.getUrl();
                        s.add(url);

                    }
                }

            }

        });

        for(int x = 0;x<s.size();x++){
            Picasso.with(myContext).load(s.get(x)).into(viewHolder.i);
        }
        */
        Picasso.with(myContext).load(p.getUrl()).into(viewHolder.i);


        return v;
    }

}

【问题讨论】:

    标签: android image parse-platform picasso


    【解决方案1】:

    这有点晚了,但是ParseFile 上的getUrl() 方法会返回文件系统上的本地 URL。在您的方法中,您只有一个 ParseFile 对象的引用,但这尚未下载到您的设备,因此 getUrl() 没有指向有意义的文件。

    如果您使用p.loadInBackground(),您将能够在该方法的回调中访问文件的 URL,但这可能不是最佳解决方案。

    【讨论】:

    • 有什么更新吗?你找到更好的解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 2019-08-14
    • 2023-01-29
    • 2016-02-08
    • 2016-07-06
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多