2011-05-05 15 views
12

Estoy construyendo una aplicación que obtiene su diseño basado en datos externos. El diseño se divide en diferentes bloques según los indatos. Estos bloques se muestran con la ayuda de un viewflipper. En cada bloque hay, por el momento, una o más "textview" y "edittext". En la primera página de la aleta, todos los datos se muestran como deberían en las textviews y edittexts. Pero en las otras páginas de viewflipper, el valor en los edittexts no se muestra hasta que el texto de edición se enfoca. No tengo ni idea de porqué. Entonces para ser claro. Los valores para todos los edittexts están realmente allí, pero no se muestran hasta que edittext se enfoque. El problema es el mismo en todos los dispositivos en los que he ejecutado la aplicación (emulador, HTC Desire, HTC Wildfire). ¿Alguien sabe cómo arreglar este problema?El valor en el texto de edición no se muestra hasta que obtiene el foco. Android

Aquí es la clase que genera la disposición:

public class ModuleLayout extends LinearLayout { 

public ModuleLayout(Context context, ArrayList<BaseModuleItem> itemList) { 
    super(context); 
    TableLayout tempTable = new TableLayout(context); 

     for (int i = 0; i < itemList.size(); i++) 
     { 
      TableRow tempRow = new TableRow(context); 
      TextView tempTextView = new TextView(context); 
      tempTextView.setText(itemList.get(i).getName()); 

      EditText tempEditText = new EditText(context); 
      tempEditText.setText(itemList.get(i).getItemValue()); 

      tempRow.addView(tempTextView); 
      tempRow.addView(tempEditText); 

      tempTable.addView(tempRow); 
     } 

     tempTable.setColumnStretchable(1, true); 
     this.addView(tempTable); 
    } 
} 

Aquí está una imagen del problema en la acción.

La imagen de la izquierda muestra todos sus valores bien. La imagen de la derecha está en la segunda posición en viewflipper y no muestra los valores en los edittexts, con la excepción de los primeros que tienen focus. También debo mencionar que después de que un texto de edición ha obtenido foco, continúa mostrando el valor incluso si arrojo otras vistas en el visualizador y luego hacia atrás.

+0

¿Puede publicar el código mínimo completo necesario para replicar su problema? –

+0

Creo que he reducido el problema a viewflipper allí estos poblados se amplían. No tengo ningún problema si le digo al viewflipper que muestre la siguiente vista ejecutando el comando SetCurrentView (int) ;. El problema es cuando hago la aventura (animar la vista para seguir mi dedo). Estoy trabajando con los parámetros "desaparecido", "invisible" y "visible". Publicaré el código cuando tenga tiempo. Necesito recortarlo antes de poder publicarlo aquí. – taktiger

+0

¿Alguna vez resolvió este problema? – Merlin

Respuesta

0

Al no haber visto su código completo, estoy sugiriendo algo, pero ¿ha intentado textView.invalidate() (si llama desde el hilo de la GUI) o textView.postInvalidate() (si llama desde otro hilo) ?

1

Ese diseño de cómo aparece aquí no está en el hilo de la interfaz de usuario, lo que significa que no importa lo que cambie, no verá nada hasta que se actualice el hilo de la interfaz de usuario (también conocido como el hilo principal). La interfaz de usuario/hilo principal es lo que ejecutan todas tus actividades, por lo que es fácil pensar que las cosas se actualizan automáticamente (ya que la mayoría del trabajo previo que has realizado también está en algún lugar dentro de la actividad, supongo). El evento onFocusChanged (haciendo clic en el texto de edición) actualizará el hilo de la interfaz de usuario llamando a invalidate() en sí mismo. Puede obligarlo a actualizar llamando a EditText.invalidate() si lo necesita, pero generalmente es mejor actualizarlo naturalmente después de la creación. Sin ver el resto de su código, esto es lo mejor que puedo hacer por usted, espero que esto ayude :)

Cuestiones relacionadas