Android Fill Spinner из базы данных берет старые записи - PullRequest
2 голосов
/ 20 ноября 2011

В начале моего приложения я показываю диалог. В этом диалоге у меня есть 2 счетчика. Если я изменяю запись первого счетчика, приложение загружает файл JSON и анализирует его в базе данных. Затем спиннер заполняется SimpleCursorAdapter из базы данных, в которой был сохранен файл JSON. Проблема в том, что когда я меняю первый счетчик, он всегда загружает базу данных, которая была сохранена при последнем изменении счетчика.

Вот мой код из метода onItemSelected:

final Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        dialogs.dismiss();
    }
};
Thread checkUpdate = new Thread() {
    public void run() {
        klassenListeAktualisieren((new Long(txtBerufID)).toString());
        handler.sendEmptyMessage(0);
    }
};
checkUpdate.start();
dbHelperKlasse = new KlassenlisteDbAdapter(myContext);
dbHelperKlasse.open();

Cursor cursor_Names = dbHelperKlasse.fetchAllOfThem();
startManagingCursor(cursor_Names);

String[] columns = new String[] { dbHelperKlasse.KEY_TITLE };
int[] to = new int[] { android.R.id.text1 };

SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(myContext, android.R.layout.simple_spinner_item,cursor_Names, columns, to);
mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
klassenSpinner.setAdapter(mAdapter);

Дайте мне знать, если вам нужно знать что-то еще (код и т. Д.).

1 Ответ

6 голосов
/ 21 ноября 2011

Для всех, кто сталкивается с той же проблемой, вот решение:

Создайте новый метод, в который вы помещаете вызов извлечения в базу данных и где вы заполняете счетчик.

Впоследствии, в методе handleMessage() вашего Handler (где я закрыл свой Dialog), вызовите этот метод. Таким образом, счетчик заполняется после того, что он записал в базу данных, а не во время этого процесса (а затем показывает «старые» данные из базы данных).

...