Preencher widgets de um cursor em onLoadFinished ()
Eu quero saber como usar oCursorLoader
para preencher os widgets em uma tela. Todos os exemplos on-line são apenas para usar um adaptador e isso funciona muito bem. O que eu preciso é uma maneira confiável de atualizar as visualizações na minha tela a partir de um Cursor e no thread da interface do usuário e sem, por vezes, travar por causa deStaleDataException
ou o cursor sendo desativado de repente. Esta é a minha abordagem atual, mas ainda recebo alguns relatórios de erros dos usuários.
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle arg1) {
CursorLoader loader = null;
switch (id) {
case LOADER_ID_DATA:
loader = new CursorLoader(...);
break;
}
return loader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, final Cursor cursor) {
handler.post(new Runnable() {
@Override
public void run() {
if (getActivity() == null)
return;
updateView(cursor);
}
});
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
}
Uma solução seria recuperar todos os campos de cursor diretamente dentro de onLoadFinished e passá-los para o manipulador para preencher os widgets no thread da interface do usuário. Mas isso é feio porque posso ter muitos valores no cursor. Eu adoraria encontrar uma maneira confiável de lidar com tudo isso.