Mueva el cursor a la fila por una de las columnas

Después de consultar los datos que quería, ahora tengo un cursor que contiene todos los datos, presentados al usuario en un ListView.

Cuando un usuario hace clic en un elemento para editarlo, muevo el cursor a la posición correcta cursor.moveToPosition(pos) , desde el cual puedo obtener todos los datos del elemento que necesito: ID, título, carpeta o no, carpeta principal.

Ahora que tengo el ID de carpeta principal, ¿cómo puedo usarlo para obtener el título de la carpeta del elemento para que pueda mostrar al usuario en qué carpeta está actualmente el elemento? No puedo utilizar el movimiento a la posición porque no sé la posición del padre, solamente su identificación.

He aquí un ejemplo del db.

FOLDER columna -> 0 = no es una carpeta (false), 1 = una carpeta (true)

Columna PARENT -> contiene el ID de su carpeta

 ID TITLE FOLDER PARENT 1 folder1 1 0 2 item1 0 1 3 item2 0 1 4 folder2 1 1 5 item1 0 4 6 item2 0 4 7 folder3 1 4 8 item1 0 7 9 item2 0 7 

Ejemplo: El usuario edita el elemento3. Muevo el cursor a la posición 2 (a partir de 0). Tengo el padre de item3, que es ID = 1. ¿Cómo puedo obtener el TÍTULO de ID = 1.

Espero que sea lo suficientemente claro 🙂 Gracias!

Puede recorrer el cursor otra vez comprobando cada id para ver si es 1 y luego obtener el título.

 cur.moveToFirst(); while (cur.isAfterLast() == false) { if (cur.getInt(cur.columnIndex("ID") == 1) { String title = cur.getString(cur.columnIndex("TITLE")); } cur.moveToNext(); } 

O puede emitir una nueva consulta donde id = 1.

Usted podría usar:

 yourCursor.getString(yourCursor.columnIndex("TITLE")); 

Esto le dará el valor en la columna "TITLE" en la fila que el cursor está apuntando actualmente.

En su consulta puede incluir un JOIN para cargar el título del padre como otra columna en su ResultSet, y más tarde recuperarlo sin necesidad de hacer otra consulta o iterar los Rs una vez más.

  • Cifrar la base de datos sqlite Android:
  • Cómo proteger una base de datos sqlite pre hecho en android?
  • Permiso de negación: esto requiere android.permission.INTERACT_ACROSS_USERS_FULL
  • Android, Diacritic Insensitive SQLite Búsqueda
  • Android concurrencia sqlite sin excepciones
  • Devuelve el recuento de registros en una variable, Sqlite, Android, Java
  • Android: ¿Cómo acceder a los resultados de Cursor cuando INNER JOIN se realiza?
  • SQLite Database: SQLiteDiskIOException: error de E / S de disco (código 1802)
  • Aplicación de Android y myBatis
  • Consulta SQLite: Seleccione la consulta con la cláusula BETWEEN
  • ¿Por qué ContentValues ​​tiene un método put que admite booleanos?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.