从Parse.com获取数据并显示在android

时间:2016-01-30 20:37:21

标签: java android database parse-platform

请你能给我一些想法和部分代码,我试图从Parse.com表中获取数据,然后在TextView或TableView中将它显示在我的Android手机上。

我可以设法获得一个值,但表中应该显示三个。

我似乎无法解决我出错的地方!任何帮助将不胜感激......

 private void forLoadingView(String c_id) throws ParseException
             {
            ParseQuery<ParseObject> query = ParseQuery.getQuery("Review");
            query.whereEqualTo("c_id", c_id);
        query.orderByDescending("rating");
                query.findInBackground(new FindCallback<ParseObject>() {
                    public void done(List<ParseObject> reviewList, ParseException e) {
                    if (e==null && reviewList!= null)
                    {

                        for(ParseObject object : reviewList) {
     String score = object.getString("rating");
                        String review = object.getString("review");
                        String name = object.getString("name");
reviews.setText(review + " " + name + " " + score);

                }
                }
                else
                {
                    Log.d("score", "Error: " + e.getMessage());
                }


                }
            });

编辑:

现在我的代码看起来更像这样:

final List<String> infoList = new ArrayList<String>();
List<String> result = new ArrayList<String>();
    ParseQuery<ParseObject> query =
            new ParseQuery<ParseObject>("Review");
   query.whereEqualTo("c_id", c_id);
        query.orderByDescending("rating");
    query.findInBackground(new FindCallback<ParseObject>() {

        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null) {
            //fill your list or adapter by using objects
            for(ParseObject obj : objects) {
                infoList.add(object.getString("score"));
                    infoList.add(object.getString("review"));
                    infoList.add(object.getString("name"));
               }
            }
        }
    });


reviews.setText(infoList.toString());

但它仍然没有打印出来...而是有一个空指针异常,因为(我猜)信息没有被发送到infoList。你有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

试试这个,它对我有用,让我知道是否也适合你:

    List<String> result = new ArrayList<String>();
    ParseQuery<ParseObject> query =
            new ParseQuery<ParseObject>(yourQuery);
    query.whereEqualTo(querykey, queryvalue);
    query.addAscendingOrder(orderKey);
    query.findInBackground(new FindCallback<ParseObject>() {

        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null) {
            //fill your list or adapter by using objects
            for(ParseObject obj : objects) {
               result.add(obj.getString(someKey));
               }
            }
        }
    });

答案 1 :(得分:0)

ParseQuery<ParseObject> query = ParseQuery.getQuery("Review");替换为ParseQuery query = new ParseQuery("Review");

根据Parse Documentation(参考here),ParseQuery.getQuery(class_name)方法检索类中的所有对象。

  

public static ParseQuery getQuery(String   className)为给定的类名创建一个新查询。默认值   没有其他参数的查询将检索所有ParseObjects   提供了班级名称。参数:className - 要的类的名称   检索ParseObjects。返回:一个新的ParseQuery。

如果通过调用ParseQuery构造函数对象进行实例化,则可以查询ParseQuery()对象。

答案 2 :(得分:0)

使用此代码

StringBuilder str_infoList = new StringBuilder();
    for (String s : infoList)
    {
        str_infoList.append(s);
        str_infoList.append(" ");
    }

reviews.setText(str_infoList);