получение обновленных данных из CursorLoader без адаптера

#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 метод