Neuling hier. Vor der Buchung Code, eine einfache Beschreibung.Async Aufgabe setzt mein Spinner
Ich habe eine kleine App, die Daten von über http lädt, speichert sie in einer Datenbank SQL Lite und zeigt es - zwei Spinner Einrichtung, eines mit Namen und einem mit einem Tag der Woche. Wenn Sie eine Kombination aus Name und Wochentag auswählen, wird ein Text angezeigt, der angibt, was diese Person an diesem Tag macht. Wenn die Kombination ausgewählt ist, wird sie unter Verwendung von SharedPreferences gespeichert. All das funktioniert gut.
Ich habe eine asynchrone Aufgabe unter einer "Aktualisieren" -Schaltfläche eingerichtet, um neue Daten vom Server abzurufen. Dies verschwindet und ruft die Daten ab, füllt die Datenbank erneut auf und aktualisiert die Anzeige. Das meiste funktioniert gut, außer dass der Name Spinner immer auf den ersten Eintrag zurückgesetzt wird, als ob er irgendwie neu initialisiert wird.
Bei der Fehlersuche funktioniert alles gut, bis die asynchronen Aufgaben in der Looper-Klasse enden. Ich bin nicht sicher, was das tut, aber sieht aus wie etwas aufräumen, und irgendwo dort ist der Spinner zurückgesetzt.
Unten ist die asynchrone Aufgabe, abgespeckt.
Irgendwelche Ideen?
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);
}
}
Also, es ist ein Spinner. Was bedeutet ProgressBar, das ist rund richtig? Es zeigt keinen linearen Fortschritt, es ist nur ein Kreis, der "eine Sekunde halten" bedeutet. Wenn Sie also das Zurücksetzen sagen, was meinen Sie? Ich habe ein Programm, das ein Spinner verwendet, während es eine AsyncTask abschließt, also möchte ich nur sicherstellen, dass ich das Problem verstehe, bevor ich antworte. – Davek804
@ Davek804: Nein, ein Android 'Spinner' ist im Grunde eine Dropdown-Liste. Nie herausgefunden, warum sie es "Spinner" nannten. – Squonk
Gut, dass ich keine ganze Antwort rausgebracht habe und mich wie ein Idiot aussehen lasse! Hoffentlich kann jemand anderes dieses Problem lösen :) – Davek804