初心者ここに。 コードを転記する前に、簡単な説明。非同期タスクは私のスピナーをリセットします
私は、SQL Liteデータベースに格納し、HTTP経由でデータをロードする小さなアプリを持っているし、それを表示する - 2つのスピナー、名前の1と曜日と1を設定します。名前と曜日の組み合わせを選択すると、その日に何をしているのかを示すテキストが表示されます。組み合わせが選択されている場合、SharedPreferencesを使用して保存されます。すべてこれはうまく動作します。
サーバーから新しいデータを取得して取得するために、「更新」ボタンの下に非同期タスクを設定しました。これは遠ざかり、データを取得し、データベースを再投入し、表示をリフレッシュします。これのほとんどはうまくいきますが、名前スピナーは、何とか再初期化されているかのように、常に最初のエントリにリセットされます。
これをデバッグすると、すべて非同期タスクがLooperクラスで終了するまでうまく動作します。私はこれが何であるかは分かりませんが、いくつかの清掃のように見え、そこのどこかにスピナーがリセットされています。
以下は非同期タスクです。
これはあなたのためにそれを行うだろうが、それはあなたが新しいアダプタにonPostExecuteが実行されるたびに作成しているという事実とは何かを持っている可能性がある場合
private class GetDataAsyncTask extends AsyncTask<String, Void, String> {
String response = "";
ProgressBar pb=(ProgressBar)findViewById(R.id.progressBar2);
Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
@Override
protected void onPreExecute() {
pb.setVisibility(View.VISIBLE);
pb.setMax(100);
super.onPreExecute();
}
@Override
protected String doInBackground(String... mystring) {
//get database
response=get_data_from_PMS();
Load_Arrays_with_stored_data();
return response;
}
@Override
protected void onPostExecute(String result) {
// display new updated consultant list
ArrayAdapter adapter_cons = new ArrayAdapter(whereisthatconsultantActivity.this,android.R.layout.simple_spinner_item, cons_spinner);
spinner1.setAdapter(adapter_cons);
adapter_cons.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//
spinner1.setSelection(GetDisplayVal("selconspos"));
//
textView2.setText(display_stored_data());
//
pb.setVisibility(View.INVISIBLE);
}
}
これはスピナーです。 ProgressBarは循環型の権利ですか?それは実際に直線的な進展を示していません、それはちょうど '秒をホールドアップ'を意味する回転円です。だからあなたがリセットを言うと、どういう意味ですか? AsyncTaskを完了している間にスピナーを使用するプログラムがあるので、応答する前に問題を理解しておきたいだけです。 – Davek804
@ Davek804:いいえ、Androidの「スピナー」は基本的にはドロップダウンリストです。彼らがスピナーという名前をつけた理由は決して解明されていません。 – Squonk
良いこと私は全体の反応を出して、自分自身を馬鹿のように見せてくれませんでした!うまくいけば、誰かがこの問題を解決することができます:) – Davek804