2016-01-12 36 views
0

我正在开发一个应用程序来从parse.com查询图像(从我的raspberryPI上传)。我也使用毕加索来显示图像。我的树莓皮被编程为以小时间隔拍摄5张照片。我只想检索上传到解析的最新5张图像。我的代码是:如何获取从parse.com上传的最后5张图片?

ParseObject object = mImages.get(position); 
//get the image 

Picasso.with(getContext().getApplicationContext()).load(object.getParseFile("pictures") 
      .getUrl()).noFade().into(holder.homeImage); 

return convertView; 

我不太确定如何修改代码以检索最新的5个图像。任何帮助将不胜感激,谢谢!

P.S.我对andriod,parse和stackoverflow很陌生。很高兴能遇见你们!

回答

0

这里是取过去5个图像的示例代码。最后添加了对该代码的一点解释。

List<ParseObject> objects; 
ParseQuery<ParseObject> query = ParseQuery.getQuery("YourClassName"); 
query.setLimit(5); 
query.orderByDescending("createdAt"); 
try { 
    objects = query.find(); 
    for (int i = 0; i < objects.size(); i++) { 

     ParseFile file = objects.get(i).getParseFile("pictures"); 
     file.getDataInBackground(new GetDataCallback() { 
      @Override 
      public void done(byte[] bytes, ParseException e) { 
       if (bytes != null && e == null) { 
        Bitmap bmpImage = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
       } else { 
        // DO SOMETHING HERE 
       } 
      } 
     }); 
    } 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

的解释:

  1. 与你要去哪里查询图像的类名更换YourClassName

  2. query.orderByDescending("createdAt");连同query.setLimit(5);确保只有最后5个图像从Parse中检索。

  3. 此代码没有考虑到毕加索的使用。然而,该示例将检索到的ParseFile转换为Bitmap。例如,将其设置为ImageView就足够简单了。

  4. 此代码用于Asynctask,因此不使用query.findInBackground(...)。根据需要进行修改。

+0

嗨,你的代码imagesQuery.setLimit(5)正在工作。但imagesQuery.orderByDescending(“createdAT”);和query.orderByDescending(“createdAt”)不是。我错过了什么吗?我检查了我的parse.com日期列,它的名称为createdAt。 – Hilda

+0

@Hilda:用新的代码更新你的OP,让我看看我能否帮忙解决它。 –

+0

嘿,代码以某种方式工作。也许我在某处犯了一个错字。感谢您的帮助! – Hilda

0

您可以从下面的代码获取完整list,然后从arraylist

ParseQuery<ParseObject> query = ParseQuery.getQuery(YourModel.class.getSimpleName()); 
     query.whereContains("key", "value"); 
     query.findInBackground(new FindCallback<ParseObject>() { 
      @Override 
      public void done(List<ParseObject> list, ParseException e) { 
        // fetch the last five objects from this list 
      } 
     } 

希望这有助于让过去的五年。 问候,

0

ParseQuery将有望解决您的问题

ParseQuery parseQuery = new ParseQuery("pictures"); 
parseQuery.setLimit(5); 
parseQuery.findInBackground(your_method_name);