es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminar el valor del cursor en Android.

Por una razón particular, estoy agregando contenido falso a mi cursor. Pero después de que el usuario haya realizado algunas acciones, quiero eliminar ese contenido falso que he agregado al cursor. ¿Existe alguna opción para hacerlo?
https://stackoverflow.com/a/18154738/14705856, esta fue una de las soluciones que encontré en SO. Pero el problema es que la tabla que estoy usando tiene muchas columnas. ¿Hay alguna manera de copiar todos los valores de las filas en lugar de agregarlos como cursor.getString(positionColumna)?

String exclueRef = “Algún id para excluir en el nuevo”;
MatrixCursor newCursor = new MatrixCursor(new String[] {“columna A”, “columna B”});
if (cursor.moveToFirst()) {
do {
// saltarse la copia de este …
if (cursor.getString(0).equals(exclueRef))
continue;
newCursor.addRow(new Object[]{cursor.getString(0), cursor.getString(1)});
} while (cursor.moveToNext());
}

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes copiar todos los valores de fila en lugar de agregarlos como cursor.getString(columnPosition) usando un MatrixCursor. Aquí tienes una solución de ejemplo:

    Primero, crea un nuevo MatrixCursor con los mismos nombres de columna que tu Cursor original:

    MatrixCursor newCursor = new MatrixCursor(cursor.getColumnNames());
    

    Luego, recorre cada fila en el Cursor original y, para cada fila, agrega una nueva fila al MatrixCursor con los mismos valores, excepto por la fila que deseas excluir:

    String excludeRef = "Algun id para excluir del nuevo";
    if (cursor.moveToFirst()) {
        do {
            // saltar la copia de esta ...
            if (cursor.getString(0).equals(excludeRef)) {
                continue;
            }
            Object[] rowValues = new Object[cursor.getColumnCount()];
            for (int i = 0; i < cursor.getColumnCount(); i++) {
                rowValues[i] = cursor.getString(i);
            }
            newCursor.addRow(rowValues);
        } while (cursor.moveToNext());
    }
    

    Este código recorre cada fila en el Cursor original y, para cada fila, crea una nueva matriz de Object con el mismo número de columnas que el Cursor original. Luego, copia cada valor de la fila original a la nueva matriz de Object. Finalmente, agrega la nueva fila al MatrixCursor.

    Ten en cuenta que este código asume que todas las columnas del Cursor original son de tipo String. Si tienes columnas de otros tipos, deberás modificar el código para manejarlos adecuadamente.

Comments are closed.