我正在尝试获取其他用户的用户名,但最终只得到当前用户的用户名。
这是我的代码,
public class UsersListActivity extends AppCompatActivity {
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_users_list);
ParseACL defaultACL = new ParseACL();
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
final ListView listView = findViewById(R.id.usersListView);
final ArrayList<String> usernames = new ArrayList<String>();
final ArrayAdapter arrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, usernames);
ParseUser user= new ParseUser();
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereNotEqualTo("username",ParseUser.getCurrentUser().getUsername());
Log.i("usernames",ParseUser.getCurrentUser().getUsername());
query.addAscendingOrder("username");
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
if (objects.size() > 0) {
for (ParseUser user : objects) {
usernames.add(user.getUsername());
Log.i("usernames",user.getUsername());
}
listView.setAdapter(arrayAdapter);
}
} else {
e.printStackTrace();
Log.i("usernames","hi");an
}
}
});
}
}
当我删除这一行时:“query.whereNotEqualTo(“username”,ParseUser.getCurrentUser().getUsername());” ,我得到了当前用户的用户名。 我在 logcat 中没有收到任何错误:(
行 query.whereNotEqualTo("username", ParseUser.getCurrentUser().getUsername());正在从查询结果中过滤掉当前用户,这就是为什么您只能在列表中获取当前用户的用户名。
如果您想检索除当前用户之外的所有用户的用户名,您应该删除此行:
public class UsersListActivity extends AppCompatActivity {
@SuppressLint("MissingInflatedId")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_users_list);
ParseACL defaultACL = new ParseACL();
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
final ListView listView = findViewById(R.id.usersListView);
final ArrayList<String> usernames = new ArrayList<String>();
final ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, usernames);
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.addAscendingOrder("username");
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
if (objects.size() > 0) {
for (ParseUser user : objects) {
// Exclude the current user's username
if (!user.getUsername().equals(ParseUser.getCurrentUser().getUsername())) {
usernames.add(user.getUsername());
}
}
listView.setAdapter(arrayAdapter);
}
} else {
e.printStackTrace();
Log.i("usernames", "Error: " + e.getMessage());
}
}
});
}
}
此修改后的代码将使用除当前用户之外的所有用户的用户名填充用户名列表,并将其显示在 ListView 中。确保删除从查询过滤器中排除当前用户用户名的行,如上所示。