2012-04-12 11 views
8

Ich versuche, ListView (und AbsListView) Logik, mit Blick recycling neu zu erstellen. Ich brauche das, aber wir können sagen, es ist nur für Android-Logik zu verstehen.Nur relayout Kinder und nicht alle der Baum

Angenommen, meine Kinderartikel sind identisch (dasselbe Layout), mit fester Höhe RelativeLayout.

Während des Scrollens verwende ich die Ghost-Children-Ansicht erneut und setze Eigenschaften für das aktuelle Objekt. Es funktioniert gut, da ich View.offsetTopAndBottom() und invalidate() anstelle von Layout beim Scrollen für die Optimierung verwenden.

Mein Problem ist die Aktualisierung der Kinder (RelativeLayout).

Hängt vom Einzelteil ab, ich möchte ImageView auf diesem Einzelteil verstecken oder zeigen. Dafür benutze ich nur iconImage.setVisibility(GONE) und iconImage.setVisibility(VISIBLE).

Da ich requestLayout blockieren, scheint es setVisibility() funktioniert nicht richtig.

Wenn ich requestLayout verwende, wird der gesamte Baum selbst messen und Layout, und es ist kein guter Weg für eine scrollende Benutzererfahrung.

Gibt es eine Möglichkeit, nur das Anforderungslayout auf dem recycelten untergeordneten Element zu erstellen?

Antwort

-2

Sie benötigen eine Listview mit geänderter Sicht so notifyDataSetChanged(); von Uithread nennen wie folgt informieren:

 final ArrayAdapter adapter = ((ArrayAdapter) getListAdapter()); 
    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      adapter.notifyDataSetChanged(); 
     } 
    }); 
Verwandte Themen