2

アプリの開始時に、ダイアログを表示します。このダイアログには、2 つのスピナーがあります。最初のスピナーのエントリを変更すると、アプリは JSON ファイルをロードし、データベースに解析します。次に、JSON ファイルが保存されたデータベースの SimpleCursorAdapter がスピナーに入力されます。問題は、最初のスピナーを変更すると、最後にスピナーが変更されたときに保存されたデータベースが常にロードされることです。

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);

他に何か知っておく必要がある場合はお知らせください(コードなど)。

4

1 に答える 1

6

同じ問題に直面しているすべての人にとって、解決策は次のとおりです。

データベースへのフェッチ呼び出しを入れ、スピナーにデータを入力する新しいメソッドを作成します。

その後、handleMessage()あなたのメソッドHandler(私が閉じた場所Dialog)で、このメソッドを呼び出します。そのため、このプロセス中ではなく、データベースに書き込んだにスピナーがいっぱいになります(そして、データベースからの「古い」データが表示されます)。

于 2011-11-21T14:53:02.153 に答える