gpt4 book ai didi

java - 在 ParseUser 中检索自定义字段

转载 作者:行者123 更新时间:2023-11-30 02:36:33 25 4
gpt4 key购买 nike

我正在尝试检索我在用户首次创建帐户时添加的“位置”字段。位置字段只是另一个字段,如“用户名”或“电子邮件”。我知道您可以使用以下方式获取一个字段:

ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore");
query.whereEqualTo("playerEmail", "dstemkoski@example.com");
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("score", "The getFirst request failed.");
} else {
Log.d("score", "Retrieved the object.");
}
}
});

上述方法的问题是我不知道位置是什么,因为每个用户的位置都不同,并且有 50 个不同的位置,所以我不能使用 whereEqualTo 方法。我只需要我的 ParseUsers 的位置字段中的信息,然后能够将其显示在 toast 或 ListView 中。

更新:

这是我在 onResume 方法中的 ListView 和适配器:

mCurrentUser = ParseUser.getCurrentUser();
mFriendsRelation = mCurrentUser
.getRelation(ParseConstants.KEY_FRIENDS_RELATION);
ParseQuery<ParseUser> query = mFriendsRelation.getQuery();
query.addAscendingOrder(ParseConstants.KEY_USERNAME);

query.findInBackground(new FindCallback<ParseUser>() {

@Override
public void done(List<ParseUser> friends, ParseException e) {
setProgressBarIndeterminateVisibility(false);
if (e == null) {
mFriends = friends;
String[] usernames = new String[mFriends.size()];
int i = 0;
for (ParseUser user : mFriends) {
usernames[i] = user.getUsername();
i++;
}

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getListView().getContext(),
android.R.layout.simple_list_item_1, usernames);
setListAdapter(adapter);
} else {
// log error
// left out to cut out code length
}
}
});

这是我尝试过的:final Object o = getListView().getItemAtPosition(position);
//字符串用户=(字符串)o;
ParseUser 用户 = (ParseUser) o;
String loc = (String) user.get("位置");
Toast.makeText(Friends.this,"位置是"+ loc, Toast.LENGTH_LONG).show();

并得到错误 cannot be cast to com.parse.ParseUser for the line ParseUser user = (ParseUser) o;

最佳答案

有很多选项,大部分引用您的onListItemClick 函数:将用户名作为字符串包含(因为这就是您要构建的内容)以查找您需要的用户详细信息(作为新查询),引用属于该用户的位置(String[] locations = new String[ mFriends.size()];),或者用两个字段(用户名位置)构建您的数组/显示您的列表

首选引用位置,因为它避免了另一个查询。

使用第二个查询获取有关点击的详细信息 - 确保您的用户名是唯一的并使用您发布的原始“获取字段”查询 - 请参阅 https://parse.com/docs/js/guide#users-queryinghttps://parse.com/docs/js/api/classes/Parse.Query.html

另请参阅:https://parse.com/questions/android-how-to-access-fields-when-using-findinbackground

private void findUserLocation(String username) { 
ParseQuery<ParseUser> query = ParseQuery.getQuery();
query.whereEqualTo("username", username);
...
query.findInBackground(new FindCallback<ParseUser>() {

@Override
public void done(List<ParseUser> users, ParseException e) {
...
//stores locations for all users that match the username
String[] locations = new String[users.size()];
for (ParseUser user : users) {
locations[i] = user.getString("location");
i++;
}
...

引用位置时 - 您可以将其存储在原始 for 循环中,例如locations[i] = user.get("location"); 然后在你的点击函数中检索它 String loc = locations[position];

在所有情况下,您都需要在存储时和/或显示它之前(取决于您的应用程序)检查 location 字段是否已定义/是否为空

关于java - 在 ParseUser 中检索自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26445091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com