J'essaie de faire un listview à partir d'une liste contenant ParseUser. Ma classe de recherche renvoie: Liste Parse SDK 1.12 ne prend plus en charge ParseQueryAdapter et la fonction d'adaptateur de profil ne prend pas ParseUser.Comment faire un ListView à partir d'une liste spécifique <ParseUser>?
J'ai essayé d'interroger les ParseObjects à partir de la classe d'analyse _User
, mais les objets ne seraient pas renvoyés.
Donc, je travaille à circels, si j'essaie d'obtenir les informations de l'utilisateur dans ParseObject je ne comprends pas. Si je travaille avec ParseUser je ne peux pas faire le ListView. Est-ce que quelqu'un sait comment l'éviter?
J'ai déjà vérifié cette question.
ParseUser Username Adapter in Android ListView doesn't show Data
et
How to fetch the list of users from ParseUser table and show the it in list view in andorid
Mais il ne fonctionne pas avec une liste précise des utilisateurs.
Ceci est mon code.
Java:
public class MainActivity extends ActionBarActivity {
Search search;
EditText mCityField;
List<ParseUser> mAccountList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ParseAnalytics.trackAppOpenedInBackground(getIntent());
mCityField = (EditText)findViewById(R.id.mCityField);
}
public void searchCity(View v){
if(mCityField.getText().toString().length()!=0){
mAccountList = search.searchUsers(mCityField.getText().toString());
Log.i("main", "succesfully searched yo mamma");
} else{
Toast.makeText(MainActivity.this, "You did not enter a city!", Toast.LENGTH_SHORT).show();
}
}
Ceci est ma recherche Classe:
public class Search {
List<ParseUser> locals = null;
public List<ParseUser> searchUsers(String city){
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("City", city);
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> userList, ParseException e) {
if (e == null) {
Log.i("main", "inside if loop" + userList);
for (ParseUser user : userList) {
Log.i("main", "inside for loop");
String username = user.getString("username");
Log.i("main", "username " + username);
}
locals = userList;
} else {
Log.d("score", "Error: " + e.getMessage());
}
}
});
return locals;
}
}
Adaptateur CLass:
public class ProfileAdapter extends ParseQueryAdapter<ParseObject> {
public ProfileAdapter(Context context, QueryFactory<ParseObject> queryFactory) {
super(context, queryFactory);
}
@Override
public View getItemView(final ParseUser user, View v, ViewGroup parent) {
// build your views
}
}
Avez-vous vraiment besoin d'une classe entière pour la méthode 'searchUsers'? Ne pouvez-vous pas inclure cette méthode dans l'activité? –
Cela n'a pas besoin d'être mais je veux séparer les requêtes de mon activité principale. – witlex
Bien sûr, bien sûr ... Où est le 'ListView' dans votre code? Je ne le fais pas ou où vous initialisez un adaptateur. En outre, 'query.findInBackground' s'exécute * de manière asynchrone *, donc' return locals' sera très probablement 'null' quand il est évalué. –