ListView Ändern von Elementen während des Bildlaufs

Ich implementiere ein ListFragment mit einem benutzerdefinierten ArrayAdapter, um die Liste aufzufüllen. Jedes Zeilenelement verfügt über eine ImageView und drei TextViews. Die Daten werden über XML analysiert und die Bilder werden asynchron geladen.

Das Problem, das ich habe, ist, dass die ListView gefüllt ist und gut aussieht, aber es gibt ein Problem beim Scrollen. Ich kann 7 Elemente gleichzeitig auf dem Bildschirm platzieren. Wenn ich zum achten scrolle, ändert es sich plötzlich, so dass die nächste Zeile erscheinen sollte. Dies geschieht nur in Zeilen, die durch 8 teilbar sind (dh in den Zeilen 8, 16, 24 usw.).

Ich verwende das ViewHolder-Muster, um eine gute Geschwindigkeit mit dieser ListView zu gewährleisten. Ich glaube, das Problem liegt irgendwo darin, aber ich habe mich umgesehen und es scheint, als ob ich dieses Muster richtig mache und mir die Dinge ausgegangen sind, um dieses Problem zu beheben. Was mache ich falsch? Vielen Dank!

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    MyViewHolder holder;
    if (row == null) {
        LayoutInflater inflater = LayoutInflater.from(mContext);
        row = inflater.inflate(R.layout.browse_result_list_item, null, false);
        holder = new MyViewHolder();
        holder.adTitle = (TextView) row.findViewById(R.id.adTitle);
        holder.region = (TextView) row.findViewById(R.id.region);
        holder.time = (TextView) row.findViewById(R.id.time);
        holder.thumbnail = (ImageView) row.findViewById(R.id.browseThumbnail);
        row.setTag(holder);
    } else {
        holder = (MyViewHolder) row.getTag();
    }
    SearchResult result = mObjects.get(position);

    holder.adTitle.setText(result.getTitle().substring(0, result.getTitle().length()-3)); // three ... at the end, remove them
    holder.region.setText(result.getRegion());
    holder.time.setText(result.getPostingTime());

    // Download the image thumbnail
    ArrayList<String> urls = result.getImageUrls();
    if (urls.size() > 0)
        download(urls.get(0), holder.thumbnail);
    else // No image for this post, put a placeholder
        holder.thumbnail.setImageResource(R.drawable.ic_action_picture);

    return row;
}

private static class MyViewHolder {
    public static TextView adTitle;
    public static TextView region;
    public static TextView time;
    public static ImageView thumbnail;
}

Bearbeiten: ich fand dieLösung danke an @frozenkoi. Letztendlich verursachten die statischen Variablen im ViewHolder Probleme. Sie sind jetzt einfach öffentlich und die Klasse ist statisch und das Problem wurde gelöst.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage