android android-listview android-cursoradapter

android - ListView usando dos cursores?



android-listview android-cursoradapter (4)

Tengo un código que ejecuta dos consultas contra una base de datos y devuelve dos objetos de cursor. ¿Hay alguna forma en que pueda combinar estos dos cursores para que todos los ListView los datos de ambos?



FYI - Un ejemplo de usar MergeCursor ()

c = Cursor que contiene las columnas de contactos de Contacts.CONTENT_URI

private Cursor mergeCursorSubset(Cursor c) { int userMobile = ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, workMobile = ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE; String storedNumber = ContactsContract.CommonDataKinds.Phone.NUMBER, displayName =ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, numberType = ContactsContract.CommonDataKinds.Phone.TYPE, contactKey = ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY, whereClausePre = contactKey+" = ''", whereClausePost = "AND ("+numberType+" = ''"+userMobile+"'' OR "+numberType+" = ''"+workMobile+"''"; Uri lookupUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;; Cursor [] m = new Cursor[c.getCount()]; if (c.moveToFirst()) for (int k = 0; k<c.getCount();k++){ //Find the mobile numbers Cursor u = this.getContentResolver().query(lookupUri, new String[]{displayName, storedNumber, numberType} , whereClausePre+c.getString(c.getColumnIndex(Contacts.LOOKUP_KEY))+"'') " + whereClausePost, null, null); int i = 0; if (u.moveToFirst()) m[i++] = u; } //for Each key return new MergeCursor(m); }


Hay MergeCursor para eso (si no hay forma de unir tablas).


También puedes usar cwac-merge .

cwac-merge: proporciona el MergeAdapter, un ListAdapter que combina múltiples Vistas o ListAdapters en un solo ListAdapter. Use esto para los encabezados de sección, combinando múltiples fuentes de datos, etc.