4

現在のがそれらに関連付けられているさまざまなListViewArrayまたはを に入力したいと思います。これには現在のユーザーに対する何らかのクエリが必要だと思いますが、ロールを返す方法と、ロールをまたはに入力できる に返す方法がよくわかりません。これを使用して現在のユーザーを取得できることはわかっています:ArrayListParseRoleParseUserArrayArrayListListView

ParseUser.getCurrentUser();

ただし、そこから、ユーザーに割り当てられた役割を確立する方法を見つけることができないようです。

編集:

私もこれを試してみました:

ParseQuery<ParseRole> query = ParseRole.getQuery();
query.whereEqualTo("users", ParseUser.getCurrentUser().getObjectId());
query.findInBackground(new FindCallback<ParseRole>() {
   @Override
   public void done(List<ParseRole> objects, ParseException e) {
      if(e == null) {
         Toast.makeText(getApplicationContext(), objects.size() + "", Toast.LENGTH_SHORT).show();
      } else {
         Toast.makeText(getApplicationContext(), "ERROR", Toast.LENGTH_SHORT).show();
      }
   }                      
});

しかし、私はまだそれに関連するものを動作させることができないようです. 「オブジェクト」のサイズがまだ常に0であるため、私は現在、考えられるすべてのことを試しましたが、実際にはどこにも行きません.

前もって感謝します!

答え:

Marius Falkenberg Waldal の回答の背後にあるロジックを実装し、それを Android に移植した後、最終的に自分の状況に合った解決策を得ることができました。将来誰かに役立つ場合に備えて、投稿することにしました。

    ParseQuery<ParseRole> roleQuery = ParseRole.getQuery();
    List<ParseRole> allRoles = null;
    try {
        allRoles = roleQuery.find();
    } catch (ParseException e) {
        e.printStackTrace();
    }
    userRoles = new ArrayList<ParseRole>();
    userRolesNames = new ArrayList<String>();
    for(ParseRole role : allRoles) {
        ParseQuery usersQuery = role.getRelation("users").getQuery();
        usersQuery.whereEqualTo("objectId", ParseUser.getCurrentUser().getObjectId());
        try {
            if(usersQuery.count() > 0) {
                userRoles.add(role);
                userRolesNames.add(role.getName().toString());
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }               

    GroupAdapter adapter = new GroupAdapter(this, userRolesNames);
    workspaces.setAdapter(adapter);
4

3 に答える 3

1

おそらく、現在のユーザーがそれぞれのロールに含まれているかどうかを確認しながら、ロールを反復処理する必要があります。申し訳ありませんが、私は iOS プログラマーであるため、一部の Android コードを提供できません。iOS では、このコードのメソッドまたはカテゴリを作成します。

PFQuery *rolesQuery = [PFRole query]; 
NSArray *allRoles = [rolesQuery findObjects];
NSMutableArray *userRoles = [NSMutableArray arrayWithCapacity:10];
for (PFRole *role in allRoles) {
    PFQuery *usersQuery = [role relationforKey:@"users"].query;
    [usersQuery whereKey:@"objectId" equalTo:[PFUser currentUser].objectId];
    if ([usersQuery countObjects]) {
        [userRoles addObject:role];
    }
}

これがあなたを正しい道に導くことを願っています...

于 2014-02-05T10:31:26.190 に答える
0

このように使用します

ParseRole myroles= (ParseRole) new ParseQuery("Role").whereEqualTo("name", "AppName-"+currentuserid).getFirst();


Here  "name" -----------Column in Role Table

      "AppName" --------eg: "MyApp-23"   in your _User table



I think this helps...
于 2014-02-04T06:54:48.900 に答える