[英]Android Parse - Complicated query
我有一个功能应该从匹配用户选择日期的Parse DB中获取事件。 涉及的两个类如下所示: SHOW-CLASS和SHOWTIME-CLASS说明:Showtimeclass仅具有一个属性,即日期属性。 Showtimeclass具有指向Showtimeclass对象的objectId数组。 因此,我的任务是找到与所选日期匹配的Showtime,然后将Showtime的结果数组与Showclass相匹配。 我试图将Showclass数组与结果数组匹配,但没有成功。 logcat中没有错误。 我的代码如下所示:
主要查询代码:
temps = new ArrayList<>();
tempTimes = new ArrayList<>();
result = new ArrayList<>();
tempTimes = getTimes();
Log.e("SKG: temptimes", String.valueOf(tempTimes.size()));
final ParseQuery<ParseObject> showQuery = ParseQuery.getQuery("Show");
showQuery.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> likeList, ParseException e) {
if (e == null) {
for (ParseObject likeItem : likeList) {
temps = likeItem.getList("showtimes");
Log.e("SKG: temps", String.valueOf(temps.size()));
for (String emp : tempTimes) {
if (temps.contains(emp)) {
result.add(likeItem);
Log.e("SKG: event", String.valueOf(result.size()));
}
}
}
}
}
});
GetTimes函数:
private ArrayList<String> getTimes() {
final ArrayList<String> t1 = new ArrayList<>();
final ParseQuery<ParseObject> showtimeQuery = ParseQuery.getQuery("Showtime");
Date de = getDateFromDatePicket(dialog.getDatePicker());
Date ds = getDateFromDatePicketStart(dialog.getDatePicker());
showtimeQuery.whereLessThanOrEqualTo("date", de);
showtimeQuery.whereGreaterThanOrEqualTo("date", ds);
showtimeQuery.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> likeList, ParseException e) {
if (e == null) {
for (ParseObject likeItem : likeList) {
t1.add(likeItem.getObjectId());
}
}
}
});
Log.e("SKG: event", String.valueOf(t1 .size()));
return t1;
}
因此,我对您的问题是:如何从Showtimeclass中获取与所选日期匹配的Showclass中的对象的objectId?
解析将其时间保存在UTC中,请确保将其转换为UTC并尝试查询,这样您现有的日期可以转换为utc
SimpleDateFormat lv_formatter = new SimpleDateFormat();
lv_formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
lv_dateFormateInUTC = lv_formatter.format(lv_localDate);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.