ListView item spécifique en gras
Résolu
Joker_
Messages postés
190
Statut
Membre
-
Joker_ Messages postés 190 Statut Membre -
Joker_ Messages postés 190 Statut Membre -
Bonjour,
Mon projet est d'afficher la liste des messages reçue par l'utilisateur dans un ListView (j'ai les stocké dans un JSONArray:
Tous ça marche bien...la liste des messages est bien affiché dans la ListView(listeMessages)
Je veux maintenant améliorer mon projet par le fait d'afficher en gras les messages non lu ( int lu=> 0: c.a.d non lu et 1 : c.a.d lu)
En faite je doit parcourir le array_messages par une boucle for pour savoir quelles sont les messages non lu ainsi faire la modification nécessaires dans mon ListView listeMessages
Alors j'ai ajouté ce code:
Mon problème est une exception lancée lors de l'exécution de l'application:
method void android.widget.TextView.setTypeface(android.graphics.Typeface,int) on a null object reference
Qu'est ce je dois faire pour éviter cette exception!!???
Mon projet est d'afficher la liste des messages reçue par l'utilisateur dans un ListView (j'ai les stocké dans un JSONArray:
JSONArray values = jsonObject.getJSONArray("message");
int code_msg = 0, lu = 0;
String message = "", object = "", date_msg = "";
boolean trouve = false;
String array_String[]= new String[values.length()];
Message array_messages[]= new Message[values.length()];// Message est une class que j'ai définit
Message message_object;
for (int i = 0; i < values.length(); i++) {
trouve = true;
JSONObject message_ = values.getJSONObject(i);
code_msg = message_.getInt("code_msg");
message = message_.getString("message");
object = message_.getString("object");
date_msg =message_.getString("date_msg");
lu = message_.getInt("lu");
message_object=new Message( message, object, date_msg, lu, code_msg);
array_messages[i]=message_object;
array_String[i]=array_String+" "+date_msg;
}
ArrayAdapter<String> adapter =new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,array_String);
listeMessages.setAdapter(adapter);
if(trouve==false)
txtResultat.setText("Boite reception vide!! ");
Tous ça marche bien...la liste des messages est bien affiché dans la ListView(listeMessages)
Je veux maintenant améliorer mon projet par le fait d'afficher en gras les messages non lu ( int lu=> 0: c.a.d non lu et 1 : c.a.d lu)
En faite je doit parcourir le array_messages par une boucle for pour savoir quelles sont les messages non lu ainsi faire la modification nécessaires dans mon ListView listeMessages
Alors j'ai ajouté ce code:
for (int i = 0; i < array_messages.length; i++) {
lu= array_messages[i].getLu();
if(lu==0) {
((TextView)listeMessages.getChildAt(i)).setTypeface(null, Typeface.BOLD);
}
}
Mon problème est une exception lancée lors de l'exécution de l'application:
method void android.widget.TextView.setTypeface(android.graphics.Typeface,int) on a null object reference
Qu'est ce je dois faire pour éviter cette exception!!???
A voir également:
- ListView item spécifique en gras
- Ecrire en gras sur whatsapp - Guide
- Raccourci gras word - Guide
- Mettre en gras sur indesign ✓ - Forum HTML
- Une personne non-voyante utilise un logiciel qui lit les textes et décrit les images. sans utiliser de logiciel spécifique, trouvez, dans le document, comment s’appelle le chien de la photo. - Forum Handicap / Accessibilté
- Travailler la typo en inDesign / element - Forum InDesign
4 réponses
Bonjour BunoCs, merci pour la réponse
J'ai bien lu votre exemple et je l'ai appliqué a mon projet... maintenant je peux prendre le contrôle a n'importe quelle ligne de ma listeMSG
Le text de l'élément numéro5 est bien changé (Indication Toast) mais le Typeface bold et italic que j'ai choisit n'est pas appliqué dans l'affichage de mon listMSG..
??!!!!!!
J'ai bien lu votre exemple et je l'ai appliqué a mon projet... maintenant je peux prendre le contrôle a n'importe quelle ligne de ma listeMSG
MyListAdapter adapter = new MyListAdapter(this, R.layout.my_custom_list, messagesList);
//attaching adapter to the listMSG
listMSG.setAdapter(adapter);
Message m = adapter.getItem(5);
m.object="Je remplace l'objet du message num 5";
View v=adapter.getView(5,null,listMSG);
((TextView)v.findViewById(R.id.textViewObject)).setTypeface(null, Typeface.BOLD_ITALIC);
Toast.makeText(getApplicationContext(),((TextView)v.findViewById(R.id.textViewObject)).getText(),2).show();
adapter.notifyDataSetChanged();
Le text de l'élément numéro5 est bien changé (Indication Toast) mais le Typeface bold et italic que j'ai choisit n'est pas appliqué dans l'affichage de mon listMSG..
??!!!!!!
dans la fonction listeMSG.setOnItemClickListener avec i dépend de position et getFirstVisiblePosition et ca marche sans exception???
Ce que tu veux faire n'est pas propre. De plus, tu as une exception car potentiellement, tu essaies d'accéder à un composant qui n'est pas visible, donc qui n'existe pas. Par exemple, si le message n°1000 n'est pas lu, tu ne peux pas accéder à sa TextView car l'élément à la position 1000 n'a pas été créé.
Tu trouveras un tuto ici: https://www.journaldev.com/10416/android-listview-with-custom-adapter-example-tutorial