1
このコードはうまくいきます - 私はSimpleCursorAdapterに一連の行をロードしています。いいねSimpleCursorAdapterはContentProviderの挿入時にデータとビューを再ロードしません
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);
を経由してリストビューには、自分自身をupdateingされていません - ない - 私はSimpleCursorAdapterは、そのビューをリロードすることができます通知され思いましたか?
新しい行が作成された - 私は、新しいデータが正しくロードされます...いただきました!ここにオブザーバー/リスナーパターン私のUIの脅威で
cursor.requery();
adapter.notifyDataSetChanged();
を使用しているとき、私はこの
で確認私はそれを得ていませんでしたか? :)
おかげで、
マーティン
ListAdapterまたはCursorAdapter? [docs](http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange)は「デフォルトでは、CursorAdapterオブジェクトはこの通知を受け取ります」と述べています。 – magegu