ListView einfärben nach eintrag

  • 9 Antworten
  • Letztes Antwortdatum
A

Astarte

Neues Mitglied
0
Hallo ich möchte gerne meine ListView einfärben.
In der Liste stehen adressen (Vorname, Nachname, Ort, Straße, Telefonnummer) drinnen, ich würde gerne
zu jeder Postleitzahl den Hintergund des eintrags in einer anderen farbe haben
Ist das möglich?
Kann mir wer einen denkanstoß geben, wie ich das ausführen kann?
 
Wenn man Änderungen im Aussehen von Listeneinträgen haben will, dann muss man einen Custom Adapter erstellen. Damit kannst du dann etwa dein eigenes Item-Layout mit eigenem Verhalten (bspw. Färbung) festlegen.
 
ich hab im moment schon eine eigene xml-datei mit textView elementen. meinst du das?
 
Schau dir mal diverse Tutorials zu Custom Adaptern an.

Google mal oder her mal 2 Beispiele:
Customizing Android ListView Items with Custom ArrayAdapter Tutorial in Category Android at EzzyLearning.com

Android Tutorials for Beginners: ListView with Custom Adapter


Im Custom Adapter (beim 1. Beispiellink heißt die Klasse WeatherAdapter, beim 2. SMSListAdapter) wird deine XML inflated, dann legst du fest, welcher Inhalt (Text, Bilder etc.) den jeweiligen Views deiner XML-Datei zugeordnet werden und dort kannst du dann auch Farben/Hintergründe etc. festsetzen.
 
Das hab ich schon gemacht ;) mein code sieht wie folt aus:


Code:
public class KundeListViewAdapter extends ArrayAdapter<Kunde>{
    
    Context context;
    List<Kunde> items;
    
    
    public KundeListViewAdapter(Context context, int resource, List<Kunde> items){
        
        super(context, resource, items);
        this.items = items;
        
    }
    
public KundeListViewAdapter(Context context, int textViewResourceId){
        
        super(context,textViewResourceId);
        
        
    }
    

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v = convertView;
        if (v == null){
            LayoutInflater vi;
            vi = LayoutInflater.from(getContext());
            v = vi.inflate(R.layout.kunden_datensatz, null);            
        }
        Kunde k = items.get(position);
        
        if (k != null){
            TextView textKundeName = (TextView)v.findViewById(R.id.txt_list_kundename);
            textKundeName.setText(k.getnachname() + " " + k.getvorname());
            
            TextView textKundeAdresse = (TextView)v.findViewById(R.id.txt_list_kundeadresse);
            textKundeAdresse.setText(k.getort() + " , " + k.getstrasse());
            
            TextView textKundeTelefon = (TextView)v.findViewById(R.id.txt_list_kundetelefon);
            textKundeTelefon.setText(k.gettelefon());
            
            TextView textKundeId = (TextView)v.findViewById(R.id.txt_list_kunde_id);
            textKundeId.setText(String.valueOf(k.getKundeId()));
            
        }
        
        return v;
    }

    
    
}
 
Naja und nun bruachst du doch nur im getView Hintergrund setzen....

convertView.setBackground... oder was auch immer du setzen willst.

Edit: mal so als Empfehlung zwecks Effizienz der Liste: arbeite mit ViewHoldern. http://www.jmanzano.es/blog/?p=166
 
Zuletzt bearbeitet:
ich möchte jetz das so machen, wenn im ORT Wien steht, soll der eintrag gelb sein, bei graz rot usw.
 
Wo ist jetzt das Problem?

PHP:
if(k.getort().equals("Wien"))
    convertView.setBackgroundColor(R.color.yellow);
[...]
 
irgendwie funzt das mit dem R.color.yellow nicht ;((
 
R.color.yellow war ja auch nur ein Beispiel...

Weiß ja nicht, woher du deine Farben her holen willst, ich jedenfalls definiere meine Farben in einer colors.xml im res-Ordner "values", welche dann bspw. so aussieht:

PHP:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="yellow">#ffffff00</color>
</resources>
 

Ähnliche Themen

P
Antworten
13
Aufrufe
514
Peter18
P
Zurück
Oben Unten