2014-10-21 3 views
1

Я пытаюсь получить данные с Parse.com и следую инструкциям и примерам на своем сайте, но я столкнулся с проблемой, которую я не могу исправить. Запрошенный запрос всегда пуст. Я использую следующий кодAndroid ParseQueryAdapter всегда пуст

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); 
} 
} 

Когда я сделать этот код (из учебника на сайте Разбор):

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

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

он работает нормально, я получаю все сохраненные комментарии для "данных" класса, но мне нужен индивидуальный запрос. Любая помощь была бы принята с благодарностью :)

ответ

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; 
     } 
    }; 
+0

Спасибо, что поделились своим кодом, это очень помогло мне с аналогичной проблемой, с которой я столкнулся – Kurtis92

Смежные вопросы