2012-07-26 38 views
12

Al inflar vistas para listView, ¿es mejor tener todas las textViews sin android: texto en el archivo .xml y cuánto afecta eso a la velocidad? ¿Qué pasa con ViewStubs, sería aún más rápido?Carga más rápida ListView, más rápido que el método Viewholder

Al inflar LinearLayout con 8 textViews sin android: text y con android: text = "@ string/abc", ¿cambia eso algo? tenga en cuenta que estoy reutilizando vistas, por lo que tal vez solo 10 se inflen y luego se reutilicen, no lo sé.

estoy desarrollando en un ZTE Blade, por lo that'a sola CPU de 600Mhz y no un quad core ...

+1

si aumenta la altura de su fila, Android tiene que dibujar menos líneas y es MÁS RÁPIDO, también puede justificar diciendo que las personas con dedos grandes pueden seleccionar más fácilmente las filas :) – max4ever

Respuesta

8

Puedes probar esto, no estoy seguro si se acelerará, pero Dale un tiro.

Infla el diseño en una cadena de fondo.

View getView(int position, View convertView, ...) { 
    View v; 
    if (convertView == null) { 
     Start a background thread to inflate your linearLayout. 
     Pass item data and view 'v' to it. 

     v = inflate a simple dummy textview; 
     return v; 
    } 
    set normal stuff to convertview here. 
    return convertView ; 
} 

En el hilo de fondo,

  • inflar sus LinearLayout en 'v'
  • Ajuste todos los datos.
  • A continuación, invalidar la vista v.

    v.postInvalidate(); 
    
+0

no puedo hacer que funcione, v.postInvalidate() no hace nada – max4ever

+0

Actualicé mi respuesta con la alternativa ... – Ronnie

+0

la idea es buena, pero no puedo hacer que funcione, ¿tiene un ejemplo? de código de trabajo simple en alguna parte? – max4ever

3

Esto es muy útil cuando la aceleración de las vistas de lista, especialmente el bit Ver Titular: http://developer.android.com/training/improving-layouts/smooth-scrolling.html

También tengo un ZTE Blade, son lentos, pero las aplicaciones que funcionan bien funcionan increíble en teléfonos "normales" :)

+0

sí, estoy usando View Holder, estaba preguntándome si el inflado tuvo alguna influencia – max4ever

+0

No creo que sí, pero si los artículos de tu fila tienen muchos artilugios, se ralentizará un poco todo. ¿Estás tratando de mejorar la velocidad de desplazamiento? –

+0

aunque uso un adaptador, mi aplicación se cuelga por unos segundos después de que Ajax regrese y llene la lista con 40 filas, y estoy usando una pestaña de galaxia de Samsung, no sé cómo optimizar más – max4ever

3

Si va a sustituir el texto en los textviews de todos modos, entonces no debería molestar poblándolas dentro del XML.

Un asesino real para el rendimiento que es tentador de hacer dentro de la lista simple se anida linelayouts. Con un poco de trabajo, cualquier árbol de distribución lineal podría reemplazarse por un diagrama de diseño relativo.

Asegúrate de no estar utilizando findViewById fuera del bloque if (convertView == null) {usando el estilo ViewHolder o simplemente configurando en view.setTag (R.id.resId, findViewById (R.id.resID)))

Ha mencionado en los comentarios que está experimentando un retraso al volver de su asynctask. Asegúrese de no volver a cargar la tabla después de cada entrada. Realice una actualización masiva de la fuente de datos y luego vuelva a cargar la tabla.

Cuestiones relacionadas