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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage