2011-06-27 4 views
5

He fijado un SimpleCursorAdapter en mi punto de vista y funciona bien cuando estoy ir a buscar los datos de mi base de datos. La consulta se ejecuta con una cláusula DESC de fecha ORDER BY. Todas las filas se obtienen y se muestran muy bien en mi ListView, y estoy usando adapter.setViewBinder() para agregar algo de lógica a los artículos (agregando una miniatura).Adición de un separador de fecha para un SimpleCursorAdapter en Android

El código es así:

// Setup the adapter 
adapter = new SimpleCursorAdapter(this, R.layout.rowitem, cursor, FROM, TO); 
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
    @Override 
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) { 
    // Only taylor the ImageView in the adapter-list, skip everything else. 
    if (view.getId() != R.id.imageItem) 
     return false; 

    // here goes the logic, but it's cut away due to its size 

    } 

    return true; 
    } 
}); 

Ahora quiero añadir un poco más lógica: Quiero añadir una pequeña barra de separación que contiene la fecha si se cambia la fecha entre dos objetos, como este:

=== DATE1 =============== 
Item 1 
Item 2 
=== DATE2 =============== 
Item 3 
=== DATE3 =============== 
Item 4 
Item 5 
Item 6 
=== DATE4 =============== 
Item 7 

y así sucesivamente. Sin embargo, no estoy seguro de cómo insertar un nuevo elemento View dentro de un adaptador y parece que no puedo encontrar una respuesta en developer.android.com.

¿Cómo puedo lograr esto?

+1

lo resolvió a mí mismo. Simplemente agregué otra vista al diseño de filas, agregué una variable ficticia que guardó la última fecha de búsqueda. Si la fecha del siguiente elemento de la lista es la misma, configure la visibilidad de la nueva Vista en GONE. – bos

+0

¿Estoy en lo cierto al pensar que esto significa que tocar en DATE2 significaría que en realidad está tocando en el Ítem 3? – chobok

Respuesta

0

También puede mirar un poco más robusta solución de la que he desarrollado: http://code.google.com/p/android-section-list/. Lo hace incluso un poco más de lo necesario (aunque sea más agradable) - que funciona de la manera que se añade un adaptador especial envolver el original y la inyección de los encabezados de sección (en sus cabeceras de fecha de casos) cuando sea necesario. Los encabezados permanecen fijos en la parte superior de la lista (de manera similar a las listas de secciones de iphone) para que siempre pueda ver cuál es la sección en la que se encuentra ...

Puede usar la lista de secciones como biblioteca - Usted sólo tendría que cambiar su adaptador para volver SectionListItem (y fecha de puesta en sección) y luego añadirlo a SectionListView - eso sería hacer el trabajo básicamente ....

+0

Se ve bien, pero no encontré ninguna fuente descargable de esa página. – bos

+0

Es un repositorio de código. Puede (debería) clonar el repositorio y obtenerlo desde allí. –

0

- Editar -

Bueno aquí es una solución sencilla para este problema:

Custom ListView with Date as SectionHeader (Used custom SimpleCursorAdapter)

--- antigua publicación --- No pude comentar su primera publicación, pero quería amablemente preguntarle si podría explicar con más detalle cómo logró obtener esta lista con los encabezados de fecha. Tendría que iterar sobre todas las filas del cursor o ¿hay alguna manera mejor provista por el marco?

que tienen un buen número de artículos y si iterar con while(listData.moveToNext()){ se toma a tiempo. (También tengo que calcular desde un sello unixtime a un Calendario, a una Fecha, a un mes-Int).

Cuestiones relacionadas