Android Parse.com通过指针查询用户

时间:2015-11-28 19:43:21

标签: android pointers parse-platform

我在使用指针查询用户数据时遇到问题,所以这是我的表(类):

_user

objectId<string> |   username<string> | ...

帖子

objectId<string>   |   post<string>  |   writerId <pointer>(_User)

writerId包含帖子作者的用户ID。

我以这种方式显示自定义ListView中的帖子:

 variables_posts = new ArrayList<VariablesPosts>();
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
    query.selectKeys(Arrays.asList("post"));
    query.include("writerId");
    on = query.find();
    for (ParseObject post : on) {
          VariablesPosts map = new VariablesPosts();
           map.setWriter((String) post.get("username"));
           map.setPost((String) post.get("post"));
           variables_posts.add(map);}

问题是如果我放

,writerId是一个指针,而不是一个字符串
map.setWriter((String) post.get("writerId")); 

应用会崩溃,所以我在另一个帮助中使用了行query.include("writerId");来直接获取用户名,但这一行:

map.setwriter((String) post.get("username")); 

也崩溃了应用程序,当我删除它时,应用程序运行正常,所以在我的情况下如何通过指针writerId从User类中获取用户名?

2 个答案:

答案 0 :(得分:0)

我不知道确切的Java语法,但是当你包含writerId然后想要获得该writerId用户的用户名时,你必须首先从Post的writerId获取User对象..类似于:  DictVectorizer.vocabulary

答案 1 :(得分:0)

指针列的命名有点误导,因为列不包含ID。你应该把它叫做 writer

要获取用户名,请执行以下操作:

query.include("writerId");
query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> postList, ParseException e) {
        if (e == null) {
            for (ParseObject post : postList) {                
                ParseObject writer = post.getParseObject("writerId");
                String userName = writer.getString("username");
                // .. (do whatever with userName)
            }
        } else {
            Log.d("post", "Error: " + e.getMessage());
        }
    }
});