этот код работает нормально - я загружаю кучу строк в SimpleCursorAdapter, и ListView отображает их. отлично.
SimpleCursorAdapter adapter;
Cursor cursor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView lv = (ListView)findViewById(R.id.main_lv_projects);
lv.setOnItemClickListener(this);
String[] columns = new String[] { CompassDataProvider.ORG_NAME };
int[] names = new int[] { R.id.organisation_row_name};
cursor = this.managedQuery(CompassDataProvider.CONTENT_URI_ORGANISATIONS, null, null, null, null);
adapter = new SimpleCursorAdapter(this, R.layout.organisation_row, cursor, columns, names);
lv.setAdapter(adapter);
startManagingCursor(cursor);
}
Но когда я вставляю новую строку через
long rowID = db.getWritableDatabase().insert(CompassDBHelper.ORGS_TABLE_NAME, "", values);
getContext().getContentResolver().notifyChange(CONTENT_URI_ORGANISATIONS, null);
return Uri.withAppendedPath(CONTENT_URI_ORGANISATIONS, ""+rowID);
представление списка не обновляется само по себе - я думал, что SimpleCursorAdapter уведомлен и может перезагрузить его представление - не так ли?
создана новая строка - я проверил на этом
когда я использую
cursor.requery();
adapter.notifyDataSetChanged();
в моей угрозе пользовательского интерфейса новые данные загружаются правильно ... что за образец наблюдателя / слушателя здесь я не получил? :)
спасибо,
Martin