我有两个班级: SHOW:包含一个指向SHOWTIMES类的指针数组 SHOWTIMES:包含日期属性。
我想: 获取与所选日期匹配的SHOWTIMES对象到数组中。这是“tempTimes”数组,它从函数getTimes()获取ParseObjects数组。他们结果是okey,我检查了它们的objectIds。
然后,我想在该数组中使用那些SHOWTIMES对象来查找SHOW对象在其指针数组中包含任何temptimes-objects的对象,称为“showtimes”。如果任何数组包含“tempTimes”中的一个对象,那么我找到了一个SHOW,它在所选日期有一个SHOWTIME,并且它被添加到数组“result”中。这也有效,但我的问题在于Main部分的最后几行代码。
如何获取我的masterquery,它是否正在查询SHOW对象,只获取SHOW数组中的SHOW?因为当我检查日志时一切看起来都是正确的, upuntil最后一行代码,因为masterQuery返回0个元素。
有什么想法? 如果你有兴趣,我很乐意解释更多,因为我很难以一种简单的方式解释这个问题!
主要
temps = new ArrayList<>();
tempresult = new ArrayList<>();
tempTimes = new ArrayList<>();
result = new ArrayList<>();
tempTimes = getTimes();
Date de = getDateFromDatePicket(dialog.getDatePicker());
Date ds = getDateFromDatePicketStart(dialog.getDatePicker());
final ParseQuery<ParseObject> showQuery = ParseQuery.getQuery("Show");
showQuery.whereLessThanOrEqualTo("startDate", ds);
showQuery.whereGreaterThanOrEqualTo("endDate", ds);
showQuery.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> likeList, ParseException e) {
if (e == null) {
Log.e("SKG: possiblesize ", String.valueOf(likeList.size()));
for (ParseObject likeItem : likeList) {
if(likeItem.getList("showtimes").contains(tempTimes)){
result.add(likeItem);
}
JSONArray jArray = likeItem.getJSONArray("showtimes").;
tempresult.clear();
for (int i = 0; i < jArray.length(); i++) {
JSONObject jsonobject = null;
try {
jsonobject = jArray.getJSONObject(i);
} catch (JSONException e1) {
e1.printStackTrace();
}
try {
String u = jsonobject.getString("objectId");
//Log.e("SKG: ustring", u);
tempresult.add(u);
} catch (JSONException e1) {
e1.printStackTrace();
}
}
for (String r : tempresult) {
if (tempTimes.contains(r)) {
result.add(likeItem);
Log.e("SKG R:", likeItem.getObjectId());
}
}
}
}
Log.e("SKG resultsize: ", String.valueOf(result.size()));
}
});
masterQuery.whereContainedIn("objectId", tempTimes);
getTimes功能:
private ArrayList<ParseObject> getTimes() {
final ArrayList<ParseObject> 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);
Log.e("SKG: t1chosen ", likeItem.getObjectId());
}
}
Log.e("SKG: t1size:", String.valueOf(t1.size()));
}
});
return t1;
}