Я запрашиваю таблицу ContactsContract.Data в Android, используя ListView для отображения данных.
Есть ли способ изменить данные, возвращаемые поставщиком контента, до их отображения?
Вот конкретный пример:
Я могу запросить ContactsContract.Data для столбца STARRED , который будет возвращать «0» или «1», но как насчет случая, когда я хотел бы вместо этого преобразовать От «0» до «не помечено» и «1» до «помечено»
Вот мой существующий код:
private void populateList() {
// Start with the cursor
Cursor cursor = getContacts();
// Then the adapter
String[] fields = new String [] {
ContactsContract.Data.DISPLAY_NAME,
ContactsContract.Data.CONTACT_STATUS,
// WOULD LIKE THIS FIELD TO BE MODIFIED
ContactsContract.Data.STARRED
};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.aa_list_activity_row_sjp,
//android.R.layout.simple_list_item_multiple_choice,
cursor,
fields,
new int [] {
R.id.rowText1,
R.id.rowText2,
R.id.rowText3
});
// end with "setListAdapter"
setListAdapter(adapter);
}
private Cursor getContacts() {
// Setup the query and return a cursor
Uri uri = ContactsContract.Contacts.CONTENT_URI;
String [] projection = new String [] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.CONTACT_STATUS,
ContactsContract.Contacts.STARRED
};
String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
String [] selectionArgs = null;
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
return managedQuery(uri, projection, selection, selectionArgs, sortOrder);
}
Я не уверен, возможно ли это, но вместо того, чтобы вставлять значение столбца STARRED непосредственно в мое представление, я хотел бы сначала выполнить некоторое условное редактирование значения столбца.
Есть предложения?
Большое спасибо,
Стив