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.
<code>@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) { } </code>
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.