2012-04-12 17 views
8

Sto tentando di ricreare la logica ListView (e AbsListView), con vista riciclaggio. Ho bisogno di questo, ma possiamo dire che è solo per capire la logica di Android.Solo relayout bambini e non tutti gli alberi

Supponiamo che i miei articoli figli siano gli stessi (stesso layout), usando l'altezza fissa RelativeLayout.

Durante lo scorrimento, sto riutilizzando la vista dei bambini fantasma e impostato le proprietà per l'elemento corrente. Sta funzionando bene, dal momento che sto usando View.offsetTopAndBottom() e invalidate() invece di richiedere il layout durante lo scorrimento per l'ottimizzazione.

Il mio problema è l'aggiornamento dei bambini (RelativeLayout).

A seconda dell'articolo, voglio nascondere o mostrare ImageView su questo articolo. Per questo, sto usando solo iconImage.setVisibility(GONE) e iconImage.setVisibility(VISIBLE).

Poiché sto bloccando requestLayout, sembra che setVisibility() non funzioni correttamente.

Se utilizzo requestLayout, tutto l'albero misurerà e si imposterà da solo e non è un buon modo per un'esperienza utente a scorrimento.

Esiste un modo per il layout della richiesta solo per l'elemento figlio di riciclo?

risposta

-2

È necessario informare il listView con cambiata di vista in modo da chiamare notifyDataSetChanged(); da Uithread come questo:

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