このコードは正常に動作しています - 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();
私のUIの脅威では、新しいデータが正しくロードされます...取得できなかったオブザーバー/リスナーのパターンは何ですか? :)
ありがとう、マーティン