Falsche Bilder beim scrollen durch ListView

  • 0 Antworten
  • Letztes Antwortdatum
J

JustinTime

Fortgeschrittenes Mitglied
19
Hallo zusammen ich suche hier Tips weil ich derzeit an einer App Tüftel und bei einer Listview etwas ratlos bin gerade. Zum Befüllen der ListView benutze ich einen eigenen Adapter und ein eigenes Design für die einzelnen Einträge. Eigentlich funktioniert das ganze ohne Probleme nur werden die Bilder in der Liste beim schnellen Scrollen falsch angezeigt. Es scheint sich wohl um ein Problem beim Recyclen der einzelnen Views der Einträge zu handeln aber ich bin mir nicht sicher was ich noch ändern kann um das Problem zu lösen.

Erstmal zum Code:

Adapter:
Code:
public class RowAdapter extends ArrayAdapter<Post> {

	private int row;
	private ArrayList<Post> data;
	private Context context;
	private Post item;

	public RowAdapter(Context context, int row, ArrayList<Post> objects) {
		super(context, row, objects);
		this.context = context;
		this.row = row;
		data = objects;		
	}

	public int getCount() {
		return data.size();
	}

	public Post getItem(int position) {
		return data.get(position);
	}

	public View getView(final int position, View convertView, ViewGroup parent) {
		View view = convertView;
		ViewHolder holder;
		if (view == null) {
			LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			view = inflater.inflate(row, null);
			holder = new ViewHolder();
			holder.tvText = (TextView) view.findViewById(R.id.text);
			holder.tvDatum = (TextView) view.findViewById(R.id.date);
			holder.tvUps = (TextView) view.findViewById(R.id.upvotes);
			holder.tvDowns = (TextView) view.findViewById(R.id.downvotes);
			[B]holder.imgThumbnails = (ImageView) view.findViewById(R.id.thumbnail);[/B]
			view.setTag(holder);
		} else {
			holder = (ViewHolder) view.getTag();
		}		
		item = data.get(position);
		holder.tvText.setText(item.getText());
		holder.tvUps.setText(String.valueOf(item.getUps()) + " Ups");
		holder.tvDowns.setText(String.valueOf(item.getDowns()) + " Downs");
		SimpleDateFormat format = new SimpleDateFormat("HH:mm dd-MM");
		holder.tvDatum.setText(format.format(item.getCreatedAtDate()));
			[B]Picasso.with(context).load(item.getThumbnailUrl()).placeholder(R.drawable.alien).fit().centerCrop().into(holder.imgThumbnails);[/B]
		

		return view;
	}

	static class ViewHolder {
		TextView tvText, tvDatum, tvUps, tvDowns;
		[B]ImageView imgThumbnails;[/B]

	}

Das Layout:

Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

   [B] <ImageView
        android:id="@+id/thumbnail"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_margin="0dp"
        android:adjustViewBounds="true"
        android:padding="0dp" />[/B]

    <TextView
        android:id="@+id/upvotes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/thumbnail"
        android:layout_toRightOf="@+id/thumbnail"
        android:ellipsize="end"
        android:maxLines="3"
        android:paddingBottom="6dp"
        android:paddingLeft="6dp"
        android:text=""
        android:textColor="@color/upvotes"
        android:textSize="13sp" />
    
    <TextView
        android:id="@+id/downvotes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/thumbnail"
        android:layout_toRightOf="@+id/upvotes"
        android:ellipsize="end"
        android:maxLines="3"
        android:paddingBottom="6dp"
        android:paddingLeft="6dp"
        android:text=""
        android:textColor="@color/downvotes"
        android:textSize="13sp" />

    <TextView
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/upvotes"
        android:lines="2"
        android:maxLines="2"
        android:paddingLeft="6dp"
        android:paddingRight="6dp"
        android:paddingTop="6dp"
        android:text=""
        android:textColor="@android:color/black"
        android:textSize="15sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/thumbnail"
        android:layout_alignParentRight="true"
        android:paddingBottom="6dp"
        android:paddingRight="6dp"
        android:text=""
        android:textColor="@android:color/black"
        android:textSize="12sp" />

</RelativeLayout>

Ich habe natürlich auch getestet ob die URLs der Bilder alle stimmen nur so zur Sicherheit. Aber wie gesagt tritt das Problem sowieso nur bei schnellem scrollen auf. Über jegliche art von Anmerkungen bin ich sehr dankbar.
 
Zurück
Oben Unten