J'ai un SimpleCursorAdapter et j'essaye de lier un SimpleCursorAdapter.ViewBinder. Voici le code que j'utilise.Android SimpleCursorAdapter.ViewBinder ne met pas à jour le TextView lié
// Setup Cursor and SimpleCursorAdapter, called in Activity onResume()
Cursor userCursor = getUserProfile(userEmail);
mAdapter = new SimpleCursorAdapter(this,
R.layout.user_profile,
userCursor,
new String[] {
StackOverFlow.Users.FULL_NAME,
StackOverFlow.Users.EMAIL },
new int[] {
R.id.txtvwProfileUserFullName,
R.id.txtvwProfileOtherUserInfo });
mAdapter.setViewBinder(new UserProfileViewBinder());
Ma classe UserProfileViewBinder:
private class UserProfileViewBinder implements SimpleCursorAdapter.ViewBinder {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
TextView tv;
switch (columnIndex) {
case 1: // TODO: Magic Numbers, bad!
tv = (TextView) view.findViewById(R.id.txtvwProfileUserFullName);
String userFullName = cursor.getString(columnIndex);
tv.setText(userFullName);
break;
case 2: // TODO: Magic Numbers, bad!
tv = (TextView) view.findViewById(R.id.txtvwProfileOtherUserInfo);
String userEmail = cursor.getString(columnIndex);
tv.setText(userEmail);
break;
}
return true;
}
}
Problème
Quand je charge l'activité, les années TextView ne soit pas mis à jour avec les données de la userCursor
. Je peux confirmer que userCursor
pointe en fait vers une ligne valide dans la base de données SQLite de support et possède des données, mais la méthode setViewValue
dans UserProfileViewBinder
ne semble jamais être en cours d'exécution. Je ne suis pas sûr de ce que je fais mal, ou néglige d'inclure.
Comme alternative, je fais ce qui suit pour définir le texte de TextView:
if (mAdapter.getCursor().moveToFirst()) {
mUserFullName.setText(mAdapter.getCursor().getString(
StackOverFlow.USER_FULL_NAME));
mUserOtherInfo.setText(mAdapter.getCursor().getString(
StackOverFlow.USER_EMAIL));
}
Mais je ne pense pas que cela mettra automatiquement à jour lorsque les modifications de données du curseur de la TextView. lorsque le ContentProvider
appelle setNotificationUri
après l'exécution d'une requête, et l'appel du serveur REST renvoie et le thread met à jour la ligne pointant vers le curseur.
Merci d'avance.