我想从解析文件获取到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。
希望这个帮助:)