【问题标题】:Android ParseQueryAdapter always emptyAndroid ParseQueryAdapter 总是空的
【发布时间】:2014-10-21 17:17:56
【问题描述】:

我正在尝试从 Parse.com 获取数据,并按照他们网站上的说明和示例进行操作,但我遇到了似乎无法解决的问题。 请求的查询始终为空。我使用以下代码

public void createParseQuery(final int markerId){
ParseQueryAdapter.QueryFactory<CommentPost> queryAdapterFactory =
    new ParseQueryAdapter.QueryFactory<CommentPost>() {
        public ParseQuery<CommentPost> create() {
        ParseQuery<CommentPost> parseQuery = CommentPost.getQuery();
        parseQuery.whereEqualTo("markerId", markerId);
        parseQuery.include("comment"); //comment define
        parseQuery.include("rating");
            return parseQuery;
        }
    };
    queryAdapter = new ParseQueryAdapter<CommentPost>(this, queryAdapterFactory) { 
        @Override
        public View getItemView(CommentPost post, View view, ViewGroup viewGroup){
            if (view == null) {
                view = View.inflate(getContext(), R.layout.item_comment_post, null);
            }
            TextView textViewPostUsername = (TextView) view.findViewById(R.id.textViewPostUsername);
            TextView textViewPostComment = (TextView) view.findViewById(R.id.textViewPostComment);
            RatingBar ratingBarPostRating = (RatingBar) view.findViewById(R.id.ratingBarPostRating);
            textViewPostUsername.setText(post.getUser().getUsername());
            textViewPostComment.setText(post.getComment());
            ratingBarPostRating.setProgress(post.getRating());
            return view;
        }
    };
    Boolean adapterEmpty= queryAdapter.isEmpty();
    Log.i("DEBUG","Adapter is empty "+adapterEmpty);
    ListView lv = (ListView)findViewById(R.id.listView111);
    lv.setAdapter(queryAdapter);
}

这里的adapterEmpty总是返回“true”,并且listView没有更新。

CommentPost 类:

@ParseClassName("data")
public class CommentPost extends ParseObject {
ParseUser user;
int markerId;
String comment;
int rating;
public CommentPost() {
    super();
}
public String getComment() {
    return getString("comment");
}
public ParseUser getUser() {
    return getParseUser("user");
}
public int getRating() {
    return getInt("rating");
}
public void setComment(ParseUser user, int markerId, String comment,
        int rating) {
    put("user", user);
    put("markerId", markerId);
    put("comment", comment);
    put("rating", rating);
}
public static ParseQuery<CommentPost> getQuery() {
    return ParseQuery.getQuery(CommentPost.class);
}
}

当我执行此代码时(来自 Parse 网站上的教程):

mainAdapter = new ParseQueryAdapter<ParseObject>(this, "data");
mainAdapter.setTextKey("comment");

ListView lv = (ListView)findViewById(R.id.listView111);
lv.setAdapter(mainAdapter);

它工作正常,我正在为类“数据”获取所有保存的 cmets,但我需要自定义查询。 任何帮助将不胜感激:)

【问题讨论】:

    标签: android parse-platform android-parsequeryadapter


    【解决方案1】:

    让它工作。代码如下:

    public void createParseQuery(final int markerId) {
    
        ParseQueryAdapter.QueryFactory<CommentPost> queryAdapterFactory = 
                new ParseQueryAdapter.QueryFactory<CommentPost>() {
            public ParseQuery<CommentPost> create() {
                ParseQuery<CommentPost> parseQuery = CommentPost.getQuery();
                parseQuery.whereEqualTo("markerId", markerId);
                parseQuery.include("user");
                parseQuery.orderByDescending("createdAt");
    
                return parseQuery;
            }
        };
    
        queryAdapter = new ParseQueryAdapter<CommentPost>(this, queryAdapterFactory) {
            @Override
            public View getItemView(CommentPost post, View view, ViewGroup parent) {
                if (view == null) {
                    view = View.inflate(getContext(),
                            R.layout.item_comment_post, null);
                }
                TextView textViewPostUsername = (TextView) view
                        .findViewById(R.id.textViewPostUsername);
                TextView textViewPostComment = (TextView) view
                        .findViewById(R.id.textViewPostComment);
                RatingBar ratingBarPostRating = (RatingBar) view
                        .findViewById(R.id.ratingBarPostRating);
    
                textViewPostUsername.setText(post.getUser().getUsername());
                textViewPostComment.setText(post.getComment());
                ratingBarPostRating.setProgress(post.getRating());
                return view;
            }
        };
    

    【讨论】:

    • 感谢您分享您的代码,它对我遇到的类似问题帮助很大
    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 2014-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多