I wprowadziły update()
z ContentProvider
i powiadomienie obserwatorem getContext().getContentResolver().notifyChange(uri, null);
notifyChange ze zmienionych URI z contentProvider.update()
moją oczywistą potrzebę jest to, że gdy tylko jeden wiersz odbywa chcę powiadomić z wiersza określonego URI, ale Nie mogłem znaleźć sposobu, aby to zrobić. dodatkowe zapytanie, takie jak "select id where selectionArgs"
, może to zrobić, ale będzie to głupi sposób.
Uzyskanie kompletnego adresu uri zamiast określonego wiersza, łatwo zrozumieć, ponieważ dzieje się tak dlatego, że ContentProvider.update()
wysyła to samo. Metoda
some code for more clarity
update() z MyContentProvider
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
Log.d("TAG", "update " + uri.getPath());
int count = 0;
switch (uriMatcher.match(uri)) {
case BOOKS:
count = booksDB.update(DATABASE_TABLE, values, selection, selectionArgs);
break;
case BOOK_ID:
count = booksDB.update(DATABASE_TABLE, values,
_ID + " = " + uri.getPathSegments().get(1)
+ (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""),
selectionArgs);
break;
default:
throw new IllegalArgumentException("Unknown URI " + uri);
}
if (count == 1) {
Cursor c = query(uri, new String[] { _ID }, selection, selectionArgs, null);
long rowId = Long.valueOf(c.getString(c.getColumnIndex(_ID)));
uri = ContentUris.withAppendedId(CONTENT_URI, rowId);
}
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
będę aktualizować tabela jakiś sposób jak
getContentResolver().update(MyContentProvider.CONTENT_URI, values1, MyContentProvider._ID+"<?", new String[]{"3"}));
szczerze mówiąc, kod ledwo podobne do pytania, po prostu staramy się dać Wasz kontekst
jakiś kod może być przydatne. Jak zaktualizować wiele wierszy? – sandrstar
Upewnij się, że wywołałeś 'setNotificationUri (ContentResolver cr, Uri uri)' na kursorze zwróconym przez metodę 'query()' dostawcy treści. Więcej informacji na http://stackoverflow.com/questions/7915050/cursorloader-not-updating-after-data-change. –