kent99 Posted March 24, 2013 Share Posted March 24, 2013 Bonjour, je suis en train de développer une application de prise de notes mais lorsque je scroll vers le bas de mes notes grâce à une listview et que je remonte au début de celle-ci l'image de la dernière note se retrouve sur la 2ème note (les miniatures jointes seront peut-être plus parlantes). J'ai suivi ce tutoriel http://developer.and...lay-bitmap.html pour pouvoir afficher plusieurs images simultanément. Comment corriger cette duplication ? Cordialement Link to comment Share on other sites More sharing options...
chpil Posted March 25, 2013 Share Posted March 25, 2013 Ton problème doit venir de la façon dont tu gères (ou tu ne gères pas) le recyclage des vues de ta ListView. Dans une ListView, les views qui correspondent à un élément sont réutilisées lorsqu'elles ne sont plus visibles, pour afficher un nouvel élément; il faut donc en tenir compte, et les réinitialiser le cas échéant. C'est sans doute ce qui se passe dans ton cas Link to comment Share on other sites More sharing options...
kent99 Posted March 25, 2013 Author Share Posted March 25, 2013 Bonjour, merci de votre réponse, mais comment réinitialiser ces views ? Voici mon code @Override public View getView( final int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub View view = null; if (convertView == null) { inflater = context.getLayoutInflater(); view = inflater.inflate(R.layout.itemnote_v2, null); final ViewHolder viewHolder = new ViewHolder(); viewHolder.noteContent = (TextView) view.findViewById(R.id.ContentNote); viewHolder.noteDate = (TextView) view.findViewById(R.id.Date); ... viewHolder.layoutContainerAll = (RelativeLayout) view.findViewById(R.id.layoutContainerAll); viewHolder.picture = (ImageView) view.findViewById(R.id.pictureChoose); view.setTag(viewHolder); viewHolder.check.setTag(lesNotes.get(position)); } else { view = convertView; ((ViewHolder) view.getTag()).check.setTag(lesNotes.get(position)); Log.d("View", "View!=null"); if(lesNotes.get(position).getPicture()!=null){ loadBitmap(lesNotes.get(position).getPicture(), ((ViewHolder) view.getTag()).picture); } } final ViewHolder holder = (ViewHolder) view.getTag(); if(lesNotes.get(position).getChecked()==1){ holder.noteContent.setPaintFlags(holder.noteContent.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); } holder.noteContent.setText(lesNotes.get(position).getContent()); if(lesNotes.get(position).getDate().equals("00/00/0000")){ holder.noteDate.setText(""); holder.layoutDateTime.setVisibility(View.GONE); }else{ holder.layoutContainerAll.setVisibility(View.VISIBLE); String dateDisplay = getDay(lesNotes.get(position).getDate()); holder.noteDate.setText(dateDisplay); } if(lesNotes.get(position).getHour().equals("null:null")){ holder.noteHour.setText(""); }else{ holder.noteHour.setText(lesNotes.get(position).getHour()); } if(lesNotes.get(position).getImportance()==1){ holder.importance3.setBackgroundResource(R.drawable.alert_triangle); }else if(lesNotes.get(position).getImportance()==2){ holder.importance3.setBackgroundResource(R.drawable.alert_triangle); holder.importance2.setBackgroundResource(R.drawable.alert_triangle); }else if(lesNotes.get(position).getImportance()==3){ holder.importance1.setBackgroundResource(R.drawable.alert_triangle); holder.importance2.setBackgroundResource(R.drawable.alert_triangle); holder.importance3.setBackgroundResource(R.drawable.alert_triangle); }else{ holder.importance1.setBackgroundResource(0); holder.importance2.setBackgroundResource(0); holder.importance3.setBackgroundResource(0); } if(lesNotes.get(position).getPicture()!=null){ holder.layoutContainerAll.setVisibility(View.VISIBLE); loadBitmap(lesNotes.get(position).getPicture(), holder.picture); } if(!lesNotes.get(position).getLocation().equalsIgnoreCase("")){ holder.layoutLocation.setVisibility(View.VISIBLE); String adresse = lesNotes.get(position).getLocation().split(";")[2]; holder.locationContent.setText(adresse); } if(lesNotes.get(position).getChecked()==1){ holder.check.setChecked(true); }else{ holder.check.setChecked(false); } ... Link to comment Share on other sites More sharing options...
chpil Posted March 25, 2013 Share Posted March 25, 2013 Il doit te suffire de réinitialiser l'imageView, dans le cas où tu réutilises la view, mais que tu ne positionnes pas de nouvelle image. Quelque chose comme ça... } else { view = convertView; ((ViewHolder) view.getTag()).check.setTag(lesNotes.get(position)); Log.d("View", "View!=null"); if(lesNotes.get(position).getPicture()!=null){ loadBitmap(lesNotes.get(position).getPicture(), ((ViewHolder) view.getTag()).picture); } else { // Cas else rajouté ((ViewHolder)view.getTag()).picure.setImageDrawable(null); // Réinitialise l'imageview avec une ressource null } } Link to comment Share on other sites More sharing options...
kent99 Posted March 25, 2013 Author Share Posted March 25, 2013 Super merci beaucoup ça marche parfaitement. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.