Clasificación de Android ListView

Sólo estoy empezando con Android dev, y aunque el Milestone es un buen dispositivo Java no es mi lenguaje natural y estoy luchando con los documentos de Google en Android SDK, Eclipse y Java en sí. De todas formas…

Estoy escribiendo un cliente de microblog para Android para ir junto con mi cliente de Windows (MahTweets). En este momento tengo Tweets viniendo y saliendo sin fallar, el problema es con la interfaz de usuario.

La llamada inicial ordenará los artículos correctamente (como en el más alto al más bajo)

  • 3
  • 2
  • 1

Cuando se realiza una actualización

  • 3
  • 2
  • 1
  • 6
  • 5
  • 4

Después de que los tweets se procesan, estoy llamando a adapter.notifyDataSetChanged(); Inicialmente pensé que getItem () en el adaptador necesitaba ser ordenado (y el código abajo es lo que terminé con), pero todavía no estoy teniendo ninguna suerte.

 public class TweetAdapter extends BaseAdapter { private List<IStatusUpdate> elements; private Context c; public TweetAdapter(Context c, List<IStatusUpdate> Tweets) { this.elements = Tweets; this.c = c; } public int getCount() { return elements.size(); } public Object getItem(int position) { Collections.sort(elements, new IStatusUpdateComparator()); return elements.get(position); } public long getItemId(int id) { return id; } public void Remove(int id) { notifyDataSetChanged(); } public View getView(int position, View convertView, ViewGroup parent) { RelativeLayout rowLayout; IStatusUpdate t = elements.get(position); rowLayout = t.GetParent().GetUI(t, parent, c); return rowLayout; } class IStatusUpdateComparator implements Comparator { public int compare(Object obj1, Object obj2) { IStatusUpdate update1 = (IStatusUpdate)obj1; IStatusUpdate update2 = (IStatusUpdate)obj2; int result = update1.getID().compareTo(update2.getID()); if (result == -1) return 1; else if (result == 1) return 0; return result; } } } 

¿Hay una mejor manera de ir sobre la clasificación de ListViews en Android, mientras que todavía puede utilizar el LayoutInflater? ( rowLayout = t.GetParent().GetUI(t, parent, c) expande la interfaz de usuario a la vista específica que la implementación de microblog puede proporcionar)

No recomendaría ordenar la lista subyacente en getItem (), en mi opinión un método get .. () debería ser 'idempotent' y no tener ningún efecto externamente visible en el estado de sus padres.

En el caso de su problema lo abordaría en el momento en que los tweets se agregan al contenedor. No ha incluido esta parte de la fuente de la aplicación, pero parece probable que esté utilizando una ArrayList. Tal vez usted está consultando la API de Twitter para una lista de tweets pedidos recientemente, y llamando add () en su ArrayList para cada resultado, que es añadir los tweets al final de la lista.

¿Sabía que puede insertar en cualquier momento en un ArrayList? Recomendaría la iteración inversa a través de los resultados de la API de Twitter e insertando cada resultado en la parte superior de su ArrayList con add (0, ….) en lugar de añadir a la parte posterior de la lista.

  • Intención de difusión cancelada. GCM de Android
  • ¿Son los programas escritos en Java para Android más lento que el equivalente escrito en C incluido en Objective-C para iOS?
  • Android Studio no ve la clase ArrayList
  • Cómo implementar Beluga o WhatsApp como sistema de mensajería en Android 2.1
  • Robotium - Escoja una cuenta en AccoutPicker con solo
  • Android: GridView simple que muestra texto en las cuadrículas
  • Gradle Android Maven Plugin no crea el archivo pom automáticamente
  • ¿Cómo pasar la intención de Android a nadie más que a mi propia aplicación?
  • Detectar la actualización de la aplicación de Android y establecer la clase de aplicación booleana para mostrar / ocultar el CLUF
  • Android ClassCastException al recuperar Vista personalizada
  • No se encontró ningún identificador de recurso para el atributo 'paddingEnd' en Package 'android'
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.