Widgets mit einem Cursor in onLoadFinished () füllen
Ich möchte wissen, wie man das benutztCursorLoader
um die Widgets auf einem Bildschirm zu füllen. Alle Online-Beispiele beziehen sich nur auf die Verwendung eines Adapters und funktionieren hervorragend. Was ich brauche, ist eine zuverlässige Möglichkeit, die Ansichten in meinem Bildschirm über einen Cursor und auf dem UI-Thread zu aktualisieren, ohne dass es manchmal zu Abstürzen kommtStaleDataException
oder der Cursor wird plötzlich deaktiviert. Hier ist mein aktueller Ansatz, aber ich erhalte immer noch einige Absturzberichte von Benutzern.
<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>
Eine Lösung wäre, alle Cursorfelder direkt in onLoadFinished abzurufen und sie alle an den Handler zu übergeben, um die Widgets im UI-Thread zu füllen. Aber das ist hässlich, weil ich möglicherweise viele Werte im Cursor habe. Ich würde gerne einen zuverlässigen, crashfreien Weg finden, um mit all dem umzugehen.