我有两个类,每个类都有一个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;
}
};
由于列表视图仍然是空的,显然没有返回任何结果!!
答案 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和适配器。