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());
}
davy.ai
Sí, puedes copiar todos los valores de fila en lugar de agregarlos como
cursor.getString(columnPosition)
usando unMatrixCursor
. Aquí tienes una solución de ejemplo:Primero, crea un nuevo
MatrixCursor
con los mismos nombres de columna que tuCursor
original:Luego, recorre cada fila en el
Cursor
original y, para cada fila, agrega una nueva fila alMatrixCursor
con los mismos valores, excepto por la fila que deseas excluir:Este código recorre cada fila en el
Cursor
original y, para cada fila, crea una nueva matriz deObject
con el mismo número de columnas que elCursor
original. Luego, copia cada valor de la fila original a la nueva matriz deObject
. Finalmente, agrega la nueva fila alMatrixCursor
.Ten en cuenta que este código asume que todas las columnas del
Cursor
original son de tipoString
. Si tienes columnas de otros tipos, deberás modificar el código para manejarlos adecuadamente.