J'ai développé une application dont une des activités est :

La liste affichée est basée sur un RecyclerView.
Comme vous pouvez le voir, la 3ème ligne, de couleur verte (à droite), signifie qu'une mise en jour a été effectuée.
Lorsque l'on appuie sur le FAB (en bas), l'application envoie les données vers le serveur afin de mettre à jour la base de données.
Je souhaite alors changer la couleur verte en couleur rouge afin de montrer que la base de données en identique à ce qui est présenté.
C'est cela que je n'arrive pas à faire.
Ci après le code associé à la méthode onClick de mon FAB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| pFloatingActionButtonMaj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pProgressBar.setVisibility(View.VISIBLE);
new Thread(new Runnable() {
@Override
public void run() {
final ArrayList<PresenceRandonnee> lListePresenceRandonnee;
lListePresenceRandonnee = pItemRecyclerViewAdapter.lireListePresenceRandonnee();
for (int i=0;i < lListePresenceRandonnee.size();i++) {
final int i_final = i;
runOnUiThread(new Runnable() {
@Override
public void run() {
pProgressBar.setProgress(100 * (i_final+1) / lListePresenceRandonnee.size());
}
});
PresenceRandonnee lPresenceRandonnee = lListePresenceRandonnee.get(i);
if (lPresenceRandonnee.equals(pListePresenceRandonneeCopie.get(i))) {
}
else {
String lURL = String.format(getString(R.string.update_URL),
lPresenceRandonnee.lireRandonneeId(),
pUserId,
lPresenceRandonnee.lirePresence());
if (ecrirePresences(lURL).contains("OK")) {
pListePresenceRandonneeCopie.set(i, lPresenceRandonnee);
runOnUiThread(new Runnable() {
@Override
public void run() {
(pListeTextView.get(i_final)).setTextColor(getColor(R.color.colorRed));
(pListeTextView.get(i_final)).setTypeface(((TextView) (pListeTextView.get(i_final))).getTypeface(), Typeface.NORMAL);
}
});
}
else {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Mise à jour base de données impossible", Toast.LENGTH_LONG).show();
}
});
}
}
}
runOnUiThread(new Runnable() {
@Override
public void run() {
pProgressBar.setVisibility(View.INVISIBLE);
}
});
}
}).start();
}
}); |
La ligne qui ne fonctionne pas est celle qui est en gras et en rouge.
Cette liste pListeTextView a été construite lors de l'appel du constructeur de mon ViewHolder de la façon suivante :
pListeTextView.add((TextView) view);
où view représente un TextView qui contient le texte de mon Spinner.
Merci pour votre aide
Partager