我有一个Game类,其中包含一个ParseUsers数组,其中包含关键字“players”:
@ParseClassName(Game.GAME)
public class Game extends ParseObject {
public static final String PLAYERS = "players";
public void addPlayer(ParseUser player) {
addUnique(PLAYERS, player);
}
public List<ParseUser> getPlayers() {
return getList(PLAYERS);
}
}
玩家的姓名字段填写如下:
ParseUser.getCurrentUser().put("name", name);
我想获取这些播放器的名称并填充ListView。我试图弄清楚如何使用ParseQueryAdapter来做到这一点,但我想不出任何可以让你做ParseQuery,它将选择在游戏中的数组中找到的ParseUsers或者将ParseQuery转换为查询ParseUsers基于该数组。这是我最好的镜头,但我不知道如何只选择此查询的子项:
ListView playerListView = (ListView) findViewById(R.id.player_list);
ParseQueryAdapter<ParseUser> adapter = new ParseQueryAdapter<ParseUser>(this,
new ParseQueryAdapter.QueryFactory<ParseUser>() {
public ParseQuery create() {
ParseQuery query = game.getQuery();
query.include(Game.PLAYERS);
return query;
}
});
adapter.setTextKey("name");
playerListView.setAdapter(adapter);
编辑:对我来说,保持此阵列中玩家的顺序也很重要。
答案 0 :(得分:1)
我会做更像这样的事情。您需要通过某个键值查询播放器对象,这些键值将它们设置为大厅或房间以填充列表。这不是你将如何做到这一点,但查询将类似地工作。我希望这有帮助。至于加载到列表属性我不知道这可以完成这项工作:/
ParseQueryAdapter<Post> mainAdapter;
ParseQueryAdapter.QueryFactory<Post> factory;
factory = new ParseQueryAdapter.QueryFactory<Post>() {
@Override
public ParseQuery<Post> create() {
ParseQuery query = new ParseQuery("PlayerObject");
query.orderByDescending("CurrentLobby");
return query;
}
};
mainAdapter = new ParseQueryAdapter<Post>(this, factory) {
@Override
public View getItemView(final PlayerObject object, View v, ViewGroup parent) {
if (v == null) {
v = View.inflate(getContext(), R.layout.player_item_on_list, null);
}
return v;
}
};
mainAdapter.setPaginationEnabled(true);
mainAdapter.setTextKey("title");
mainAdapter.setImageKey("Image");
mainAdapter.loadObjects();