Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Qué adaptador usar – BaseAdapter o ArrayAdapter?

Tengo una cadena de JSON con las varias instancias de la siguiente

  1. Nombre
  2. Mensaje
  3. Timestamp
  4. URL de la foto del perfil

Quiero crear un ListView donde cada lista tendrá lo anterior. ¿Cuál es el mejor adaptador que necesito extender para este caso particular, para crear un adaptador personalizado?

  • ViewPager con FragmentPagerAdapter no muestra contenido
  • ¿Cómo evitar el reajuste total de la jerarquía de vista cuando se utiliza EditText?
  • Cuándo usar Soapobject y SoapPrimitive
  • Problema con la imagen de 9 parches como fondo
  • No se puede pausar la actividad, la vista de contenido aún no se ha creado
  • MSISDN: ¿Es una tarjeta SIM datos? ¿Por qué toda la función proporcionada (desde Blackberry y Android) para buscar MSISDN no es fiable?
  • Obteniendo java.lang.RuntimeException: Stub al ejecutar Robolectric a través de Maven
  • El popup de jQuery.mobile se oculta inmediatamente después de mostrar
  • ¿Cómo puedo obtener las coordenadas de un mapa al toque con MapFragment (no MapView)?
  • ¿Cómo se muestra un diálogo en android sin un contexto de actividad?
  • ¿Cómo deshabilitar el mensaje de pan tostado que a veces aparece con los controles de zoom en un WebView?
  • AsyncTask Threading Rule - ¿Realmente sólo se puede usar una vez?
  • One Solution collect form web for “¿Qué adaptador usar – BaseAdapter o ArrayAdapter?”

    Mi suposición es que usted ha analizado la cadena de JSON en un modelo de objeto antes de considerar cualquier caso … vamos a llamar a esta clase de perfil.

    Estrategia 1

    Un ArrayAdapter es suficiente con un método overView getView (..) que concatenará sus múltiples campos juntos en la forma que desee.

    ArrayAdapter<Profile> profileAdapter = new ArrayAdapter<Profile>(context, resource, profiles) { @Override public View getView(int position, View convertView, ViewGroup parent) { View v; // use the ViewHolder pattern here to get a reference to v, then populate // its individual fields however you wish... v may be a composite view in this case } } 

    Recomiendo encarecidamente el patrón ViewHolder para listas potencialmente grandes: https://web.archive.org/web/20110819152518/http://www.screaming-penguin.com/node/7767

    Esto hace una enorme diferencia.

    • Ventaja 1. Le permite aplicar un diseño complejo a cada elemento del ListView.
    • Advantage 2. No requiere que manipule toString () para que coincida con su visualización deseada (después de todo, mantener el modelo y la lógica de vista separados nunca es una mala práctica de diseño).

    Estrategia 2

    Como alternativa, si el método toString () en su clase representativa ya tiene un formato aceptable para la visualización, puede utilizar ArrayAdapter sin sobreescribir getView ().

    Esta estrategia es más sencilla, pero te obliga a destruir todo en una cadena para su visualización.

     ArrayAdapter<Profile> profileAdapter = new ArrayAdapter<Profile>(context, resource, profiles) 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.