2012-04-12 8 views
8

Estoy tratando de recrear ListView (y AbsListView) lógica, con vista de reciclaje. Necesito esto, pero podemos decir que es solo para entender la lógica de Android.Solo relayout hijos y no todo el árbol

Supongamos que los elementos de mis hijos son los mismos (misma disposición), utilizando una altura fija de RelativeLayout.

Durante el desplazamiento, estoy reutilizando la vista de niños fantasma y establezco propiedades para el elemento actual. Está funcionando bien, ya que estoy usando View.offsetTopAndBottom() y invalidate() en lugar de solicitar el diseño durante el desplazamiento para la optimización.

Mi problema es actualizar a los niños (RelativeLayout).

Dependiendo del elemento, quiero ocultar u mostrar ImageView en este artículo. Para eso, solo estoy usando iconImage.setVisibility(GONE) y iconImage.setVisibility(VISIBLE).

Dado que estoy bloqueando requestLayout, parece ser setVisibility() no funciona correctamente.

Si utilizo requestLayout, todo el árbol medirá y se distribuirá por sí mismo, y no es una buena forma de desplazarse por la experiencia del usuario.

¿Hay alguna manera de solo solicitar el diseño en el artículo reciclado?

Respuesta

-2

debe notificar su Listview con cambiado de vista así que llame notifyDataSetChanged(); de Uithread así:

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