【问题标题】:Android parse.com I can't get second user from data baseAndroid parse.com 我无法从数据库中获取第二个用户
【发布时间】:2015-09-16 23:36:08
【问题描述】:

我在数据库中有两个表。一个是用户广告,第二个是具有指向第一个用户的指针、指向第二个用户的指针和 int 的事务。当我尝试制作和显示列表时出现错误。我想显示 CurrentUser 在第一列中的所有行:

ParseUser cu = ParseUser.getCurrentUser();
query.whereEqualTo("first", cu);

并将其与 firstUser、secondUser 和 int 一起列出:

来自适配器:

ParseObject taskObject = mTask.get(position);


    ParseUser first = taskObject.getParseUser("first");
    holder.firsthp.setText(first.getUsername());


    ParseUser second = taskObject.getParseUser("second");
    holder.secondhp.setText(second.getUsername()); //this line make error

    int ile = taskObject.getInt("ile");
    holder.taskhp.setText(Integer.toString(ile));

    return convertView;

这是 transakcja 表的外观:http://i.stack.imgur.com/yh83p.png

当我保存事务时(当事务表清除时,没有任何记录)并立即读取它可以工作,但是当我注销并登录时它会崩溃。 这是 toDoActivity 任务适配器和 hplayout 的完整代码:

我在这里粘贴代码时遇到问题,所以我将它粘贴到了 pastebin http://pastebin.com/2wtQLJXE

【问题讨论】:

  • 把我的答案写在下面,如果解决了请告诉我

标签: android database parse-platform


【解决方案1】:

我想我知道问题所在。当您在事务表上调用查询时,两个用户是指向 ParseObjects 的指针,或者在这种情况下是 ParseUsers。您需要确保这些对象也被 ParseQuery 获取,以便正确访问它们的数据。它们是带有来自另一个表的数据的 ParseObject,Parse 不会自动检索它们,因此您必须在需要该数据时告诉 Parse 这样做。

查看适用于 Android 的 ParseQuery 文档,我们发现了 include 方法。

公共 ParseQuery 包含(字符串键)

为提供的键包含嵌套的 ParseObjects。 您可以使用点表示法来指定包含对象中的哪些字段也被提取。

您希望使用它来包含指向 ParseObjects 指针的列名称,以便查询在从表(在本例中为您的事务表)中获取其余数据的同时获取它们。

添加这个:

ParseQuery<ParseObject> query = ParseQuery.getQuery("transakcja");
query.whereEqualTo("first", cu);
query.addDescendingOrder("createdAt");
query.include("first");
query.include("second");

原因首先是没有 null 问题,它是指向当前 ParseUser 登录的指针,不需要获取它,因为它的数据是可访问的。第二个是未获取,因此将包含添加到查询应该解决这个问题:)。确保还包括“第一”列,因为我确信您未来的 ParseQuery 不会总是介于当前用户和非当前第二个用户之间

【讨论】:

  • 非常感谢!我试图修复它几个小时。我不能放弃对你的回答的投票,因为我的声誉很低,但是当我得到更多的点数时,我会这样做:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2019-01-07
相关资源
最近更新 更多