#android #android-contentprovider
#Android #android-contentprovider
Вопрос:
У меня есть настройка sqlite, contentprovider для моих данных. Теперь я знаю, что все это работает просто отлично, потому что у меня есть activity, который реализует интерфейс LoaderCallback и имеет ListView, который обновляется через адаптер при изменении данных.
Кроме того, у меня есть действие с той же настройкой, за исключением ListView. В этом упражнении я хочу собрать данные, предоставленные моим contentprovider через CursorLoader, в ArrayList, чтобы заполнить и обновить два разных представления, которые не являются AdapterViews.
Я получаю данные следующим образом:
@Override
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
// Must include the _id column for the adapter to work
String[] projection = new String[]{VitalSet.COL_TYPE};
return new CursorLoader(
this,
CicelyContentProvider.CONTENT_URI_DISTINCT,
projection,
null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
while(cursor.moveToNext()) {
cursorText.append(cursor.getString(cursor.getColumnIndex(VitalSet.COL_TYPE)));
}
}
@Override
public void onLoaderReset(Loader<Cursor> cursorLoader) { }
и в моем методе onCreate я инициализирую загрузчик:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_overview);
getLoaderManager().initLoader(0, null, this);
}
это отлично работает, если я запускаю действие, но TextView не обновляется, если я добавляю новые данные. Есть ли какой-нибудь listenerMethod, который мне нужно реализовать, если я не использую адаптер, или просто невозможно получить обновленные данные без адаптеров?
у меня есть необходимые уведомления в моем запросе contentprovider и insertmethods.
любые предложения будут оценены.
Комментарии:
1. ContentResolver.registerContentObserver или что-то подобное
2. Да, спасибо. Это работает довольно хорошо, но мой подход, описанный выше, также работает, моя ошибка заключалась в том, что у меня были разные URI для запроса и вставки. вот почему обновления не были распознаны.
3. ой, извините, я забыл, что CursorLoader регистрирует ContentObserver в своем курсоре, см. CursorLoader.loadInBackground метод