我正在与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();
}
}
});
}
}
答案 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.
}
}
});