package com.gueei.demos.markupDemo.viewModels; import gueei.binding.collections.CursorCollection; import gueei.binding.collections.LazyLoadParent; import gueei.binding.cursor.IdField; import gueei.binding.cursor.IntegerField; import gueei.binding.cursor.RowModel; import gueei.binding.cursor.StringField; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.provider.ContactsContract; public class NestedCursor { public static class ContactRowModel extends RowModel implements LazyLoadParent{ public StringField Title = new StringField(ContactsContract.Contacts.DISPLAY_NAME); public IdField Id = new IdField(ContactsContract.Contacts._ID); public CursorCollection<EmailRowModel> Emails = new CursorCollection<EmailRowModel>(EmailRowModel.class); public void onLoadChildren(Context context) { Cursor c = context.getContentResolver().query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{Id.get().toString()}, null); Emails.setCursor(c); } } public static class EmailRowModel extends RowModel{ public StringField Address = new StringField(ContactsContract.CommonDataKinds.Email.DATA); public IntegerField Type = new IntegerField(ContactsContract.CommonDataKinds.Email.TYPE); } public CursorCollection<ContactRowModel> Contacts = new CursorCollection<ContactRowModel>(ContactRowModel.class); public NestedCursor(Activity activity){ Cursor contact = activity.getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, new String[]{ ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME }, null, null, null); activity.startManagingCursor(contact); Contacts.setCursor(contact); } }