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("所有者", user.getUsername());

問題は、ユーザー名ではなく currentUser を照会する場所でした。

于 2017-04-04T17:49:58.993 に答える