1

解析中的我的类称为“MyClass”,这个类有几个对象,例如

| ObjectId | Names | owners | users | (owners is a pointer of another class)

我想做一个查询,为我提供属于所有者的对象“名称”中的所有名称,但是,当我执行此查询时,我得到了这个:

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

3 回答 3

1

您真正的问题是您的 ArrayAdapter。如果您想使用 Parse 对象作为您的数据类型,您将需要一个自定义适配器。内置适配器不知道如何使用 Parse 对象,并将对象作为字符串输出给您。相反,你应该做类似的事情

arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, MyNamesList);

MyNamesList类型在哪里String

如果没有更多信息,很难帮助您的查询,但是您正在获取 Parse 对象,您只需要使用类似的东西从中获取名称

MyList.get(i).getString("name");

于 2013-09-15T05:10:17.763 回答
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 提供的,不会在这里做

于 2013-06-23T12:02:58.503 回答
0

解决方案非常简单,因为你得到了 com.parse.whatever,你需要做的就是 ParseUser user = ParseUser.getCurrentUser(); 然后 query.whereequalto("owner", user.getUsername());

问题是,你在哪里查询 currentUser 而不是用户名。

于 2017-04-04T17:49:58.993 回答