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.
- ¿Cómo puedo manejar múltiples clientes conectados a un servidor mediante sockets?
- ¿Cómo puedo cambiar el color de los clústeres en mi mapa de Google para Android?
- Cómo obtener colores aleatorios usando una clase aleatoria?
- ¿Es posible hacer una consulta sin procesar en la base de datos de metales de Android de meta sqlite?
- Android / java Sqlite: ¿Cómo recuperar la fecha máxima?
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)
- Garbage Collection en android (Hecho manualmente)
- Mostrar subtemas y títulos de ListView
- Cómo encontrar el código fuente de la llamada de función nativa de Java
- Problemas con zona horaria incorrecta en Android
- Error de Android: recreate () debe ser llamado desde el subproceso principal
- OnDraw eficiente con mapas de bits y aceleración por hardware
- Java.net.SocketTimeoutException (ANDROID)
- Cómo agregar una sombra y un borde en circular imageView android?
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.
- Android: Moneda Rublo ruso no se muestra en cierto teléfono?
- Android / gradle: no puede utilizar el repositorio