我想从解析文件获取到ImageView。我试图通过“ getDataInBackgound”来获取,但是当我调用此方法时,UI陷在其中,并且得到了最后一张图片。

ParseFile image = tableParseObjects.getParseFile(PARSE_IMAGES);

                    image.getDataInBackground(new GetDataCallback() {

                        @Override
                        public void done(byte[] data, ParseException e) {
                            Bitmap bitpic = BitmapFactory.decodeByteArray(data, 0, data.length);
                            ByteArrayOutputStream stream = new ByteArrayOutputStream();
                            bitpic.compress(Bitmap.CompressFormat.PNG, 100, stream);
                            vectorSample.setPic(bitpic);

                        }
                    });

最佳答案

我认为您必须使用Picasso或ImageLoader类加载图像。我有同样的疑问,我也使用了ParseImageView。这是我的代码:

使用asynctask从parse.com检索ParseFile(图像):

public class BackgroundQuery extends AsyncTask<Object, Void, Object> {
    private String id;

    public BackgroundQuery(String id) {
        this.id = id;
    }

    @Override
    protected Object doInBackground(Object... params) {
        Object o = null;
        try {
            ParseQuery<ParseObject> query = ParseQuery.getQuery(params[0]
                    .getClass().getSimpleName());
            query.whereEqualTo("objectId", id);
            List<ParseObject> result = query.find();

            if (result != null) {
                for (ParseObject obj : result) {
                    o = obj.getParseFile("photo"); // Photo is the ParseFile
                }
            }
        } catch (ParseException e) {
            Log.e(TAG, e.getMessage());
        }
        return o;
    }
}


在您的布局中,将其像ImageView一样使用:

<com.parse.ParseImageView
        android:id="@id/imgv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:adjustViewBounds="true />


使用此行将图片加载到ParseImageView中:


  Picasso.with(this).load(parsefile.getUrl())。into(parseimageview);


快速加载较大图片的一种替代方法是使用ImageLoader。请检查this

希望这个帮助:)

10-08 07:21