【问题标题】:Get data out of Parse.com and display on android从 Parse.com 获取数据并在 android 上显示
【发布时间】:2016-01-30 20:37:21
【问题描述】:

请你给我一些想法,也许是部分代码,我正在尝试从 Parse.com 表中获取数据,并在我的 Android 手机上以 TextView 或 TableView 的形式显示它。

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

我似乎无法弄清楚我哪里出错了!任何帮助将不胜感激...

 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。你有什么想法吗?

谢谢!

【问题讨论】:

  • 这是什么意思? query.whereEqualTo("c_id", c_id);你不是在这里查询特定的ID吗?三个对象是否共享相同的 c_id ?
  • 是的,所有对象共享同一个 C_id

标签: java android database parse-platform


【解决方案1】:

ParseQuery&lt;ParseObject&gt; query = ParseQuery.getQuery("Review"); 替换为ParseQuery query = new ParseQuery("Review");

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

公共静态 ParseQuery getQuery(String className) 为给定的类名创建一个新查询。默认 没有其他参数的查询将检索所有 ParseObjects 提供类名。参数: className - 类的名称 检索 ParseObjects。返回:一个新的 ParseQuery。

ParseQuery 对象可以通过调用ParseQuery() 构造函数来实例化它。

【讨论】:

  • 可悲的是,这并没有做任何事情。查询正在获取正确的值,它们只是没有在 TextView 中正确显示
  • 确保 TextView 评论对于 forLoadingView 方法是全局的,并尝试像这样设置文本 reviews.setText(object.getString("review") + " " +object.getString("name") + " " + object.getString("rating"));
【解决方案2】:

试试这个,它对我有用,如果对你也有用,请告诉我:

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

【讨论】:

  • 感谢您的帮助!所以我把我的代码改成了你的,然后if (e == null) { for(ParseObject object : messages) { //fill your adapter by using messages String score = object.getString("rating"); String review = object.getString("review"); String name = object.getString("name"); reviews.setText(review + " " + name + " " + score); etc这仍然只打印了一件事,但是当我系统输出评论时,它显示了终端中的所有值,你知道让它显示在屏幕上吗?
  • 如果我没记错的话,您对查询结果很满意,但是从 ParseObject 中提取数据时遇到问题?
  • 是的,我对这个查询很满意。变量 review 里面是它应该包含的三个项目。但是,当我要求它设置 textView 时,它只显示最后一项。你知道如何让它显示所有三个吗?
  • 我建议您从返回的对象(或您创建的字符串)中获取日志,以确保它与 textview 的输出结果不同,然后确保您的 textview 正确初始化。
  • 所以日志确实显示了正确的结果。 TextView 的唯一问题是,为了访问变量 rating、review 和 name,它需要在查询框中。我还要如何初始化它?
【解决方案3】:

使用此代码

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

reviews.setText(str_infoList);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-17
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多