我在数据库中有两个表。一个是用户广告,第二个是具有指向第一个用户的指针的事务,指向第二个用户的指针和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
答案 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并不总是介于当前用户和非当前第二个用户之间