senin ContentProvider
döndü imleç için bir dinleyici ekleyin:
sizin
insert
/
update
/
delete
yöntemlerinde Sonra
Cursor cursor = queryBuilder.query(dbConnection, projection, selection, selectionArgs, null, null, sortOrder);
cursor.setNotificationUri(getContext().getContentResolver(), uri);
böyle kodu kullanın:
final long objectId = dbConnection.insertOrThrow(ObjectTable.TABLE_NAME, null, values);
final Uri newObjectUri = ContentUris.withAppendedId(OBJECT_CONTENT_URI, objectId);
getContext().getContentResolver().notifyChange(newObjectUri , null);
Sizin CursorLoader
olacak haberdar olun ve OnLoadFinished(Loader, Cursor)
tekrar çağrılacaktır.
Bir Loader
kullanmıyorsanız, ContentObserver
Eğer db değişiklikleri bildirilir kod birkaç satır ile, gitmek yoludur (ama elle yeniden sorgulamak gerekir).
private ContentObserver objectObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
restartObjectLoader();
}
};
onResume()
yılında aramayı unutmayın:
getContentResolver().registerContentObserver(ObjectProvider.OBJECT_CONTENT_URI, false, objectObserver);
ve onPause()
yılında:
getContentResolver().unregisterContentObserver(objectObserver);
Güncelleme: UI Değişiklikler Bu daha büyük bir konudur bu Adapter
size bağlıdır çünkü ListView
veya'ü doldurmak için kullanın.
CursorAdapter olarak onLoadFinished(Loader loader, Cursor data)
mAdapter.swapCursor(data);
ArrayAdapter onLoadFinished(Loader loader, Cursor data)
olarak RecyclerView.Adapter
Object[] objects = transformCursorToArray(data); //you need to write this method
mAdapter.setObjects(objects); //You need to wrie this method in your implementation on the adapter
mAdapter.notifyDataSetChange();
onLoadFinished(Loader loader, Cursor data)
olarak
Object[] objects = transformCursorToArray(data); //you need to write this method //Here you have more mAdapter.notify....()
RecyclerView.Adapter
bildirmek için farklı bir yol from here okuyun.
Sepet içindeki ürün, veritabanındaki * insert * işlemi ile birleştirilmiştir? – Blackbelt
Ne demek istediğinizden tam olarak emin değilim ama temelde, http isteği tamamlandıktan sonra, veritabanı tablosunda karşılık gelen satırı güncelleyin, bu durum bir şekilde UI tarafından yansıtılmalıdır. Benim sorunum, DB verisi değiştirildikten sonra UI'nin güncellenmesi gerektiğini söyleyemem. Satırı güncelleştirdikten sonra – midnight
callifyChange'ı çağırdınız mı? – Blackbelt