如何在parse.com android中合并来自两个不同类的查询结果?

时间:2014-03-13 14:08:20

标签: android parse-platform

我有两个类,每个类都有一个ParseUser类的用户引用和一个ParseGeoPoint对象。我不得不这样做,因为parse不允许两个具有相同键的ParseGeoPoint对象。现在我想将两个查询的结果组合到ParseQueryAdapter中并为其设置listview。我担心的是:

1)如何组合查询结果。

ParseQuery<Source> srclist = Source.getQuery();
srclist.include("user");
srclist.whereNear("src", src);

ParseQuery<Destination> destlist = Destination.getQuery();
destlist.include("user");
destlist.whereEqualTo("dest", dest);

//Source and Destination are the two classes which have one ParseGeoPoint and a user reference respectively.

2)如何使用组合结果填充列表视图?

这就是我正在做的结合,是不是?

Location myLoc =currentLocation;
ParseGeoPoint mySrc=geoPointFromLocation(myLoc);
srclist=Source.getQuery();
srclist.include("user");
srclist.whereWithinKilometers("src", mySrc, 5.0);
destlist = Destination.getQuery();
destlist.include("user");
destlist.whereNear("dest", myDest);
destlist.whereMatchesQuery("user", srclist);
ParseQueryAdapter.QueryFactory<ParseUser> factory= new ParseQueryAdapter.QueryFactory<ParseUser>(){
@Override
public ParseQuery<ParseUser> create() {
user = ParseUser.getQuery();
user.whereMatchesQuery("user", destlist);
user.setLimit(MAX_SEARCH_RESULTS);
return user;
}
};

由于列表视图仍然是空的,显然没有返回任何结果!!

1 个答案:

答案 0 :(得分:0)

1)通过创建一个持有者来组合:一个有三个字段的对象:(或者你可以使用setter / getters将它们设为私有)

public class WhereAbouts{

    public String user;
    public Source src;
    public Destination dest;
}

然后将其添加到ParseQuery回调列表中的列表

List<WhereAbouts> list = new ArrayList<WhereAbouts>();
list.add(whereAbouts);

2)在适配器的getView()中,获取WhereAbouts对象并设置每个文本字段:

getView(...){
  ....
  WhereAbouts w = getItem(position);
  myTextField.setText(w.user); 
  //etc...
}

如果您不了解这些内容,请检查google / SO上的Listview和适配器。