Reputation: 21
I tried to create a method that get a user by user's name. I'm using parse query. Here is my method:
public ParseUser getUserByName(String name){
ParseUser user;
ParseQuery<ParseUser> query = ParseQuery.getQuery("_User");
query.whereEqualTo("username", name);
query.getFirstInBackground(new GetCallback<ParseUser>() {
public void done(ParseUser result, ParseException e) {
if (result== null) {
Log.d("user", "Get user failed.");
} else {
user= result; // Compile error here, said: "Variable 'user' need to be declared final"
}
}
});
return user;
}
It complied error, and said that: "Variable 'user' need to be declared final". But, if I declared:
final ParseUser user;
so I can't assign the search result to user:
else {
user= result; // Can't assign to user, because it's final.
}
So How can I get and return the search result from query callback? Please help. Thanks.
Upvotes: 2
Views: 403
Reputation: 6834
try this
public ParseUser getUserByName(String name){
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("username", name);
try {
return query.getFirst();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
use
ParseUser parseUser = getUserByName("userName");
if(parseUser !=null){
}
Why getFirst();
Retrieves a list of ParseObjects that satisfy this query from the source in UI or Main Thread
why findInBackground();
Retrieves a list of ParseObjects that satisfy this query from the source in a background thread.
When we use findInBackground();
you can't return any result because your method will return result without waiting of done()
response
Upvotes: 2