Listview - Zeilenfarbe bestimmter Zeilen ändern

  • Hallo zusammen,


    ich sitze an einem Problem und weiß einfach nicht wie ich es lösen soll. Irgendwie will das einfach nicht funktionieren. Ich versuche mit einem Custom-Array-Adapter erstellt. Jetzt versuche ich in der getView bei bestimmten Zeilen die Hintergrundfarbe zu ändern. Das ganze sieht schon mal nicht schlecht aus, funktioniert aber einfach nicht. Wenn die View angezeigt wird werden die Zeilen richtig eingefärbt. Scrollt man aber nach unten und dann wieder rauf werden die gefärbten Zeilen leider wieder normal angezeigt. Die Hintergrundfarbe ist dann in Zeilen die gar nicht eingefärbt werden sollen. Ich habe in meinem Object eine Eigenschaft "ueberschrift" die mit 1 oder 0 gefüllt wird. Bei 1 soll die jeweilige Zeile eingefärbt werden. Kann mir jemand sagen was ich falsch mache?
    Hier der Code des Adapter:


    Context context;
    int layoutResourceId;
    private ArrayList<rs_daten> items;
    private int ueber = 0;


    public rs_datenAdapter(Context context, int layoutResourceId, ArrayList<rs_daten> items) {
    super(context, layoutResourceId, items);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.items = items;
    }



    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    rs_datenHolder holder = null;
    rs_daten rs_daten = items.get(position);



    if(row == null)
    {
    LayoutInflater inflater = ((Activity)context).getLayoutInflater();


    row = inflater.inflate(layoutResourceId, parent, false);
    holder = new rs_datenHolder();
    holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
    holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
    holder.txtUeber = rs_daten.getueberschrift();
    if (holder.txtUeber > 0){
    //row.setBackgroundResource(R.layout.listrow_ueber);
    holder.txtTitle.setTextColor(Color.parseColor("#ffffff"));
    }
    row.setTag(holder);
    }
    else
    {
    holder = (rs_datenHolder)row.getTag();
    }


    if (holder.txtUeber > 0){
    //row.setBackgroundResource(R.layout.listrow_ueber);
    row.setBackgroundColor(Color.parseColor("#00ff00"));
    }


    holder.txtTitle.setText(rs_daten.gettitle());
    holder.imgIcon.setImageResource(rs_daten.geticon());


    return row;
    }



    static class rs_datenHolder
    {
    ImageView imgIcon;
    TextView txtTitle;
    int txtUeber;
    }
    }

  • Du musst natürlich für beide Varianten den Background setzen... Listviews recyclen Views


    if (holder.txtUeber > 0){
    //row.setBackgroundResource(R.layout.listrow_ueber);
    row.setBackgroundColor(Color.parseColor("#00ff00"));
    }
    else {
    background auf standard setzen;
    }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!