Ich versuche detaillierte Produktinformationen in einem benutzerdefinierten Listview mit zwei TextViews pro Zeile für das Schlüssel/Wert-Paar anzuzeigen. Die Daten werden korrekt angezeigt. Ich habe auch jede zweite Zeile anders gefärbt.Android - Benutzerdefinierte ListView Viewholder
Und da ist mein Problem. Wenn ich die verschiedenen farbigen Reihen nach oben und unten scrolle, ändere ihre Farbe und bleibe in diesem Zustand. Die Daten sind von diesem Problem nicht betroffen. Nur die Hintergrundfarbe der TextViews. Ich benutze das ViewHolder Pattern, aber das änderte nichts. Ich habe den Code des Adapters hinzugefügt. Ich denke das ist genug. Hast du eine Idee?
Screenshot des Problems:
Code:
public class ProductDetailAdapter extends BaseAdapter {
private LinkedHashMap<String,String> list;
private Context context;
public ProductDetailAdapter(Context c, LinkedHashMap<String,String> list){
super();
this.context = c;
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ProductDetailAdapter.ViewHolder viewHolder;
if(convertView == null){
convertView=inflater.inflate(R.layout.product_detail_data_row,null);
viewHolder = new ViewHolder();
viewHolder.textViewKey = (TextView) convertView.findViewById(R.id.productDataKey);
viewHolder.textViewValue = (TextView) convertView.findViewById(R.id.productDataValue);
convertView.setTag(viewHolder);
}else {
viewHolder = (ProductDetailAdapter.ViewHolder) convertView.getTag();
}
viewHolder.textViewKey.setText((String)list.keySet().toArray()[position]);
viewHolder.textViewValue.setText(list.get(list.keySet().toArray()[position]));
if(position % 2 == 0){
viewHolder.textViewKey.setBackgroundColor(context.getResources().getColor(R.color.colorParkerWhite2));
viewHolder.textViewValue.setBackgroundColor(context.getResources().getColor(R.color.colorParkerWhite2));
}
return convertView;
}
private static class ViewHolder {
public TextView textViewKey;
public TextView textViewValue;
public ViewHolder(){};
}
}
Die Bild-URL ist gebrochen wird funktionieren. Bearbeite deine Frage bitte. Danken! – aldakur
image url: https://i.stack.imgur.com/OS3Op.png funktioniert gut für mich – Mike
Versuchen Sie, eine neue 'ViewHolder-Instanz 'in' if (Position% 2 == 0) 'zu erstellen – aldakur