Parse.com在查询中显示来自每个关系的所有对象
问题描述:
我想在随后的查询中显示来自每个关系的所有对象。但它仍然是空的。我尝试了这个代码,但它没有奏效。我希望有一个人可以帮助我。在此先感谢Parse.com在查询中显示来自每个关系的所有对象
mData = new ArrayList<>();
ParseQuery<ParseObject> receiver = ParseQuery.getQuery("Group");
receiver.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> feed, ParseException e) {
if (e == null) {
mData = feed;
for (int i = 0; i < mData.size(); i++) {
ParseRelation<ParseObject> relation = mData.get(i).getRelation("Data");
ParseQuery<ParseObject> query = relation.getQuery();
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
rData = objects;
Log.e("APP", String.valueOf(rData.size()));
Log.d("APP", "mData" + mData.size());
if (mSwipeStack.getAdapter() == null) {
mAdapter = new SwipeAdapter(getContext(), rData);
mSwipeStack.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
Log.d("mAdapter", "Loaded");
}
}, 4000);
//mSwipeStack.setListener(getActivity());
Log.i("APP", "We found messages!");
}
}
});
}
}
}
});
对不起我的英语不好:)
答
我建议你使用指针,而不是关系(你的情况),我将解释为什么:
它不是最好的做法在循环中运行findInBackground,因为如果你的数据集(mData)的大小很大,你会执行mData.size调用服务器,这不是一个最佳实践,也不可扩展。我建议你使用指针阵列(你可以阅读更多关于它here) 通过使用阵列,你将只需要一个服务调用来获取所有数据到你的客户端(这样你的解决方案将更具可扩展性和更简单)
所以新的解决方案(如果你决定去与它当然:))的将是如下:
- 组收集
- 数据收集
- 之一,从集团到许多收藏(只读在d OCS它如何可以做到)
然后你的代码如下所示:
EDIT1 - 使用的GetList
ParseQuery<ParseObject> receiver = ParseQuery.getQuery("Group");
reciever.include("data");
receiver.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> feed, ParseException e) {
// in here you can access all the data which under group in the following way:
for (int i=0;i < feed.size();i++){
ParseObject obj = feed.get(i);
// here you have all the data collection
List<ParseObject> dataItems = obj.getList("data");
// now you can loop on dataItems
}
}
});
请注意有机会的话,我的代码不是100%准确的,但我希望你明白了。
祝您好运:)
您期望在每个关系下有多少个对象? –
@Ran Hassid有时1000或2000.这是不同的 – Loyal
我会发布一个答案和建议到您的问题 –