Для этого вы можете использовать CursorLoader. Предполагается также, что у вас есть ContentProvider в качестве источника данных для приложения, о котором я не буду говорить здесь, но вы можете узнать о них в this post, если хотите.
Чтобы синхронизировать данные базы данных в ListView, вы должны сделать две вещи:
- Создание пользовательского адаптера, который реализует CursorAdapter
- Реализовать LoaderManager в вашем фрагменте
Для реализовать LoaderManager просто переопределить три необходимых метода. Один из них используется для настройки вашего курсора, который будет подавать результаты на ваш адаптер. С этого момента, если ваш ContentProvider должным образом уведомляет об изменениях в URI, вы заметите эти изменения в адаптере. Вот фрагмент кода загрузчика:
public class AccountsFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor>{
private static final int MY_LOADER = 0;
@Override
public void onActivityCreated() {
super.onActivityCreated();
getLoaderManager.initLoader(MY_LOADER, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
switch(id){
case MY_LOADER:
return new CursorLoader(
getActivity(),
MY_URI,
MY_COLUMNS,
null,
null,
null
);
default:
throw new UnsupportedOperationException("Unknown loader id: " + id);
}
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
switch(loader.getId()){
case MY_LOADER:
mAdapter.swapCursor(datA);
default:
throw new UnsupportedOperationException("Unknown loader id: " + loader.getId());
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
switch(loader.getId()){
case MY_LOADER:
mAdapter.swapCursor(null);
break;
default:
throw new UnsupportedOperationException("Unknown loader id: " + loader.getId());
}
}
}
Я много узнал об этом из Udacity course, которая учит вас много о Android снизу вверх, и если вы ищете полный обзор, я думаю, это очень много стоит вашего времени.
использовать contentprovider + API-интерфейс Loaders ... если вы будете вставлять строки через CP, то перезагрузка будет выполнена автоматически ... btw, вопрос слишком широк ... вы должны быть точнее ... fx откуда «новая строка» отправляется (фоновый поток? сервис? B-Receiver) – Selvin