ListView mit eigenem Adapter updaten

  • 2 Antworten
  • Letztes Antwortdatum
GENiALi

GENiALi

Fortgeschrittenes Mitglied
11
Hallo

Für eine Liste habe ich mir einen eigenen Adapter und ein egenes Layout gebaut. Das funktioniert soweit einwandfrei.

Code:
public View getView(int position, View convertView, ViewGroup parent)
{
    View view = convertView;
    
    if(view == null)
    {
        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.alarm_item, null);
    }
    
    Alarm alarm = this.alarme.get(position);
    
    if(alarm != null)
    {
        TextView tvFrom = (TextView)view.findViewById(R.id.alarm_item_tvFrom);
        tvFrom.setText(alarm.getFrom());
        
        TextView tvDate = (TextView)view.findViewById(R.id.alarm_Item_tvDate);
        tvDate.setText(alarm.getDate().toLocaleString());
        
        .....
        
        if(alarm.getHighlight() == null || alarm.getHighlight() == true)
        {
            view.setBackgroundColor(Color.parseColor("#14FF0000"));
        }
        else
        {
            view.setBackgroundColor(Color.TRANSPARENT);
        }
    }
    
    return view;
}
Wenn ein Datensatz ein bestimmtes Flag gesetzt hat wird der Hintergrund des ListView Items geändert. Funktioniert auch noch wunderbar.

Code:
if(alarm.getHighlight() == null || alarm.getHighlight() == true)
{
    view.setBackgroundColor(Color.parseColor("#14FF0000"));
}
Wenn die Activity mit der Liste angezeigt wird soll der Hintergrund nach 10 Sekunden wieder verschwinden. Funktioniert nur ansatzweise. Dazu habe ich einen Timer der mir beim Auslösen die Daten neu aus der DB list und der ListView den Adapter neu zuweist.

Code:
alarme = alarmBal.getListOrderBy("date");
alarmAdapter = new AlarmAdapter(this, R.layout.alarm_item, alarme);
this.alarm_lvAlarme.setAdapter(alarmAdapter);
Funktioniert soweit auch nicht schlecht bis auf den Punkt das die Schrift in den Items fast die Farbe des Hintergrundes hat. Und das sieht blöd aus.

Wie löst man so ein Updateteil vorzugsweise richtig?
 
Also eigentlich reicht es den Adapter mit dem neuen Daten zu füllen und notifydasatechanged aufzurufen

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
Du bist ein Held. Danke. :thumbsup:

Code:
alarmAdapter.clear();
for(Alarm alarm : alarme)
{
    alarmAdapter.add(alarm);
}
alarmAdapter.notifyDataSetChanged();
addAll geht leider noch nicht da die Methode erst ab API11 zur Verfügung steht. Aber jetzt wird korrekt updatet.
 

Ähnliche Themen

BerndFfm
Antworten
7
Aufrufe
1.239
swa00
swa00
K
Antworten
3
Aufrufe
978
mezzothunder
mezzothunder
Zurück
Oben Unten