根据活动选择关联用户

时间:2014-08-10 20:14:02

标签: java android android-layout android-activity parse-platform

我正在与Parse.com合作,并希望设置一个条件,显示已选择特定活动页面的用户列表。例如,我有一个由JSON数据填充的项目列表,以及每个项目通向特定页面的位置。我想建立一个条件,将已选择该特定活动页面的用户返回给当前用户。

如果您需要更多信息,请与我们联系。 提前谢谢。

更新 这是我到目前为止所尝试的。 我想我会在解析中创建一个名为“活动名称”的列,当用户点击该确认按钮时,将记录活动名称。然后在匹配活动中,它将填充活动名称列下的活动名称相等的用户。对于匹配的代码,我在考虑

var activitycompare = new Parse.Query("Activity Name");
activitycompare.equalTo('Activity Name', string);

围绕那条线的东西。任何帮助或建议都会有所帮助。

更新2 谢谢。 请告知修改后的代码,因为我意外收到以下错误:

userActivitySelectionName cannot be resolved to a variable

它基本上会看到哪些用户选择了该特定活动名称并将其返回。

  public class MatchingActivity extends Activity {

 private String currentUserId;
    private ArrayAdapter<String> namesArrayAdapter;
    private ArrayList<String> names;
    private ListView usersListView;
    private Button logoutButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.matching);

        logoutButton = (Button) findViewById(R.id.logoutButton);
        logoutButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                ParseUser.logOut();
                Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
                startActivity(intent);
            }
        });

        setConversationsList();
    }

    private void setConversationsList() {
        currentUserId = ParseUser.getCurrentUser().getObjectId();
        names = new ArrayList<String>();


        ParseQuery<ParseUser> query = ParseUser.getQuery();
       query.whereNotEqualTo("objectId", currentUserId);
        query.whereEqualTo("ActivityName",userActivitySelectionName);

        query.findInBackground(new FindCallback<ParseUser>() {
            public void done(List<ParseUser> userList, ParseException e) {
                if (e == null) {
                    for (int i=0; i<userList.size(); i++) {
                        names.add(userList.get(i).getUsername().toString());
                    }

                    usersListView = (ListView)findViewById(R.id.usersListView);
                    namesArrayAdapter =
                        new ArrayAdapter<String>(getApplicationContext(),
                            R.layout.user_list_item, names);
                    usersListView.setAdapter(namesArrayAdapter);

                    usersListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> a, View v, int i, long l) {
                            openConversation(names, i);
                        }
                    });

                } else {
                    Toast.makeText(getApplicationContext(),
                        "Error loading user list",
                            Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    public void openConversation(ArrayList<String> names, int pos) {
        ParseQuery<ParseUser> query = ParseUser.getQuery();
        query.whereEqualTo("username", names.get(pos));
        query.findInBackground(new FindCallback<ParseUser>() {
           public void done(List<ParseUser> user, ParseException e) {
               if (e == null) {
                   Intent intent = new Intent(getApplicationContext(), MessagingActivity.class);
                   intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
                   startActivity(intent);
               } else {
                   Toast.makeText(getApplicationContext(),
                       "Error finding that user",
                           Toast.LENGTH_SHORT).show();
               }
           }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

如果您要为每个用户记录一个活动,那么您可能会将其作为属性添加到User类。然后正确的查询(在Android中):

var userQuery = ParseUser.getQuery();
userQuery.whereEqualTo("activityName", someString);
userQuery.findInBackground(new FindCallback<ParseUser>() {
  public void done(List<ParseUser> objects, ParseException e) {
    if (e == null) {
        // The query was successful.
    } else {
        // Something went wrong.
    }
  }
});