我正在查詢ContactsContract.Data Android中的表使用ListView來顯示數據。Android:在ContentView Provider中修改數據,然後在ListView中使用
有沒有辦法在內容提供者顯示之前修改從內容提供者返回的數據?
這裏是一個具體的例子:
我可以查詢ContactsContract.Data爲加星列,這將返回一個「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列的值到我的視圖我想先做一些條件編輯的列值。
有什麼建議嗎?
非常感謝你, 史蒂夫
真棒,這樣的偉大工程,我敲我的現在頭撞牆。此外,它重新調整搜索範圍,讓我發現SimpleCursorAdapter.ViewBinder - 如果我有rep,我會投票贊成:) – 2011-03-04 03:19:13