Android parse.com我无法从数据库

时间:2015-09-16 23:36:08

标签: android database parse-platform

我在数据库中有两个表。一个是用户广告,第二个是具有指向第一个用户的指针的事务,指向第二个用户的指针和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 Task Adapter和hplayout的完整代码:

我在这里粘贴代码时出现问题,所以我将其粘贴到pastebin上         http://pastebin.com/2wtQLJXE

1 个答案:

答案 0 :(得分:3)

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

查看Android的ParseQuery文档,我们找到了include方法。

  

public ParseQuery include(String key)

     

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

您希望使用此命令将列名称包含到ParseObjects的Pointers中,以便查询在从表中获取其余数据的同时获取它们,在本例中为您的事务表。

添加:

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

原因首先是没有空问题,它是指向当前ParseUser登录的指针,由于它的数据是可访问的,因此不需要获取它。第二个是未获取,因此在查询中添加include应该修复此问题:)。确保还包括#34;第一列&#34;因为我确定你未来的ParseQuery并不总是介于当前用户和非当前第二个用户之间