My class in parse被称为“MyClass”,这个有几个对象,如
| ObjectId | Names | owners | users | (owners is a pointer of another class)
我想做一个查询,它给我属于所有者的对象“Names”中的所有名称但是,当我执行此查询时,我得到了这个:
com.parse.ParseObject@41828fe0
com.parse.ParseObject@41829fdd
com.parse.ParseObject@4182aa28
我的代码就是这个
final ParseQuery query = new ParseQuery("MyClass");
query.whereEqualTo("owners", ParseUser.getCurrentUser());
query.findInBackground(new FindCallback() {
public void done( List<ParseObject> MyList, ParseException e) {
if (e == null) {
adapter = new ArrayAdapter<ParseObject>(MyActivity.this, android.R.layout.simple_list_item_1, MyList);
listDev.setAdapter(adapter);
}else{
//error
}
请帮助我如何执行该查询,该查询为我提供了属于所有者的所有名称。
修改 我找到了一个解决方案,就像这样。
ParseQuery<ParseObject> query = ParseQuery.getQuery("MyClass");
ParseUser user = ParseUser.getCurrentUser();
query.whereEqualTo("owners", user);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, com.parse.ParseException e) {
if (e == null) {
for (ParseObject parseObject : objects){
String task;
task= parseObject.get("owners").toString();
adapter.add(task);
adapter.notifyDataSetChanged();
}
} else {
// Something went wrong.
Toast.makeText(getActivity(),"Error: " + e.getMessage().toString(),Toast.LENGTH_SHORT).show();
}
}
});
答案 0 :(得分:1)
这里真正的问题是你的ArrayAdapter。如果要将Parse对象用作数据类型,则需要自定义适配器。内置适配器不知道如何使用Parse对象,并将对象作为字符串输出。相反,你应该做类似
的事情 arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, MyNamesList);
MyNamesList
的类型为String
。
在没有更多信息的情况下很难为您的查询提供帮助,但是您正在获取Parse对象,您只需要使用类似
的名称来获取它们的名称 MyList.get(i).getString("name");
答案 1 :(得分:0)
查询方法之外的某个地方
private ArrayList<YourObjectType> list;
public void done(List<ParseObject> objects, ParseException e) {
if (objects == null || objects.size() == 0) {
return; //no objects
}
list = new ArrayList<YourObjectType>();
for (int i = 0; i < objects.size(); i++) {
YourObjectType myObject = new YourObjectType();
ParseObject object = objects.get(i);
myObject.objectId = object.getObjectId();
myObject.names = object.get("Names");
myObject.owners = object.get("owners");
myObject.users = object.get("users");
list.add(myObject);
}
adapter = new ArrayAdapter<YourObjectType>(MyActivity.this,android.R.layout.simple_list_item_1, MyList);
listDev.setAdapter(adapter);
}
现在将列表设置为适配器
你的适配器应该能够处理你的类型的对象,所以我认为你需要创建一个自定义适配器,android sdk提供的那个,不会在这里做
答案 2 :(得分:0)
解决方案非常简单,因为你正在获得com.parse.whatever,所有你需要做的就是ParseUser user = ParseUser.getCurrentUser(); 然后query.whereequalto(“owner”,user.getUsername());
问题是,你在查询currentUser而不是用户名。