我是Android的新手,真的需要熟悉Parse API的帮助。我所做的是设置我的卡片容器,里面装满了多张图片。然而,真实显示按照“DownloadBitmap”以随机顺序显示卡片而不是按照我的想法升序。可疑的根本原因可能是通过“getdatainbackground()”运行的延迟时间。有谁知道这个混乱的问题怎么能解决?我尝试使用“getdata()”代替,但它确实杀死了性能,似乎不是一个好选择。我的代码如下。
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("food");
query.orderByAscending("order");
query.setLimit(10);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(final List<ParseObject> objects, ParseException e) {
for (ParseObject obj_food : objects) {
if (obj_food.getInt("order") == order) {
final ParseFile file = obj_food.getParseFile("picture");
//bitmap
file.getDataInBackground(new GetDataCallback() {
public void done(byte[] data, ParseException e) {
if (e == null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
DownloadBitmap.add(bitmap);
}
}
});
}
order++;
}
}
});
答案 0 :(得分:0)
您的主qry应该将链接的URL的JSON返回到您的位图的Parse.files。
您应该使用图像库(UIL,Picasso,AQuery ...)来管理方面(网络GET,缓存GET),基于该卡的Layout.VIEW的asNeeded位图。
当您需要卡的布局/视图的bitMap时,您只需让图像库管理它......这些库旨在用于“getView()”工作流程。
示例AQry(parms参考视图和图像的Url列表)
private static AQuery mAq;
mAq.id(holder.imgView).width(110).image(mm.getImages().get(0).getUrl().toString(),
true, true, 0, R.drawable.default_video, null, 0, mAspectRatio);
example Picasso
@Override public View getView(int i, View view, ViewGroup viewGroup) {
//TODO how is this called w val=-1
if(i < 0) i = 0;
ViewHolder viewHolder;
if (view == null) {
viewHolder = new ViewHolder();
view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.grid_item, viewGroup, false);
viewHolder.image = (ImageView) view.findViewById(R.id.image);
viewHolder.text = (TextView) view.findViewById(R.id.text);
view.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) view.getTag();
}
Picasso.with(view.getContext())
.load(HomeActivity.getUrlbyPosition(i))
.into(viewHolder.image);
if (HomeActivity.getMsgByPosition(i).length() > 39) {
viewHolder.text.setText(HomeActivity.getMsgByPosition(i).substring(0, 39));
}else{viewHolder.text.setText(HomeActivity.getMsgByPosition(i));
}
return view;
}