Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Problème d'affichage ListView

Sujet résolu
    3 juillet 2012 à 3:17:18

    Bonjour,

    J'ai un petit soucis sur une listview personnalisé.

    J'explique le problème :
    Dans ma listview, chaque item possède une image et plusieurs textes.
    Parmi ces textes, il y a un texte qui détermine un temps.
    Je ne vais prendre que 2 cas pour simplifier l'explication :
    Ce temps, s'il est inconnu, la couleur de ce texte est celle par défaut.
    Si ce temps est supérieur ou égal à 80, je change la couleur pour que le temps soit rouge.
    Ma liste est longue, si les 30 premiers sont avec un temps de couleur normal, il n'y a pas de soucis on peut naviguer parmi les 30 items aucun problème. Mais si le 31ème à un temps de couleur rouge et que quand je défile dans ma liste je le voit, si je remonte dans ma liste, d'autres temps normaux prennent aussi la couleur rouge de l'item que j'ai vu.

    Pour créer ma liste, j'ai créé un adapter modifié en suivant le tuto du site developpez.com : http://mickael-lt.developpez.com/tutor [...] ser-listview/

    Le code de l'adapter (on peut voir à la fin la partie qui modifie la couleur, etc..) :
    public class AttractionAdapter extends BaseAdapter {
    
    	private List<Attraction> mListP;
    	private Context mContext;
    	private LayoutInflater mInflater;	
    
        public AttractionAdapter(Context context, List<Attraction> aListP) {
            mContext = context;
            mListP = aListP;
            mInflater = LayoutInflater.from(mContext);
        }
    	
    	
        public int getCount() {
            return mListP.size();
        }
    
    
        public Object getItem(int position) {
            return mListP.get(position);
        }
    
        public long getItemId(int position) {
            return position;
        }
        
        public View getView(int position, View convertView, ViewGroup parent) {
            LinearLayout layoutItem;
            if (convertView == null) {
            	layoutItem = (LinearLayout) mInflater.inflate(R.layout.affichageitem, parent, false);
            } else {
            	layoutItem = (LinearLayout) convertView;
            }
            
            ImageView img = (ImageView)layoutItem.findViewById(R.id.img);
            TextView temps = (TextView)layoutItem.findViewById(R.id.temps);
            TextView min = (TextView)layoutItem.findViewById(R.id.min);
            TextView titre = (TextView)layoutItem.findViewById(R.id.titre);
            TextView description = (TextView)layoutItem.findViewById(R.id.description);
            TextView id = (TextView)layoutItem.findViewById(R.id.id);
            
            img.setImageResource(mContext.getResources().getIdentifier("i" + mListP.get(position).id, "drawable" , "com.fusoya.paa" ));
            temps.setText(mListP.get(position).temps);
            titre.setText(mListP.get(position).titre);
            description.setText(mListP.get(position).description);
            id.setText(mListP.get(position).id);
    
            
            if(temps.getText() == "En panne" || temps.getText() == "Fermé")
            {
            	min.setVisibility(View.GONE);
            	temps.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            	temps.setTextColor(Color.RED);
            }
            if(temps.getText() != "--" && temps.getText() != "En panne" && temps.getText() != "Fermé")
            {
    	        if(Integer.parseInt((String) temps.getText()) >= 80)
    	        {
    	        	temps.setTextColor(Color.RED);
    	        	min.setTextColor(Color.RED);
    	        }
    	        else if(Integer.parseInt((String) temps.getText()) < 80 && Integer.parseInt((String) temps.getText()) >= 40)
    	        {
    	        	temps.setTextColor(Color.parseColor("#FFFF9F19"));
    	        	min.setTextColor(Color.parseColor("#FFFF9F19"));
    	        }
    	        else if(Integer.parseInt((String) temps.getText()) < 40 && Integer.parseInt((String) temps.getText()) >= 0)
    	        {
    	        	temps.setTextColor(Color.parseColor("#FF78BA00"));
    	        	min.setTextColor(Color.parseColor("#FF78BA00"));
    	        }
            }
            
            return layoutItem;
        }
    }
    


    J'ai une petite idée du style de problème, genre cache ou rafraîchissement (je me comprends ^^) mais vu que je débute en développement android et java, j'ai un peu de mal ^^

    Si vous avez besoin de quelque chose, n'hésitez pas à demander.
    Merci d'avance !

    Edit : Il fallait que je gère les else dans le getView !
    • Partager sur Facebook
    • Partager sur Twitter

    [Android] Problème d'affichage ListView

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown