Christian Dud
- Forum-Beiträge: 3
31.05.2011, 11:18:48 via Website
31.05.2011 11:18:48 via Website
Hi Allerseits,
ich habe ein komisches update Problem wenn ich versuche aus einem Runnable den Wert einer ProgressBar zu setzen UND dabei gleichzeitig eine TextView bearbeiten möchte (für die % Anzeige). Bei der ProgressBar klappts, sobald ich aber versuche den Text der TextView zu setzen, kann ich auf meiner Oberfläche keine Updates mehr feststellen.
Die Activity aus der das gestartet wird soll im Prinzip "Trophys" bzw Achievements (Erfolge) in der App anzeigen die ich grade schreibe. Die werden in
einer ListView angezeigt. Für jede Trophy wird ein eigenes Runnable gestartet. Hier mal der Code, der für das updaten verantwortlich ist:
Sobald ich
auskommentiere, funktioniert es. ich sehe wie meine Progressbar gefüllt wird. Setze ich den Text
der TextView aber ebenfalls, sieht es so aus, als ob er genau ein Update machen würde und dann "hängt" die Aktualisierung!
Kann mir jemand sagen was ich falsch mache?
Vielen Dank im Vorraus
Chris
ich habe ein komisches update Problem wenn ich versuche aus einem Runnable den Wert einer ProgressBar zu setzen UND dabei gleichzeitig eine TextView bearbeiten möchte (für die % Anzeige). Bei der ProgressBar klappts, sobald ich aber versuche den Text der TextView zu setzen, kann ich auf meiner Oberfläche keine Updates mehr feststellen.
Die Activity aus der das gestartet wird soll im Prinzip "Trophys" bzw Achievements (Erfolge) in der App anzeigen die ich grade schreibe. Die werden in
einer ListView angezeigt. Für jede Trophy wird ein eigenes Runnable gestartet. Hier mal der Code, der für das updaten verantwortlich ist:
1private void updateTrophys() {
2 try {
3 for (int i = 0; i < list.getAdapter().getCount(); i++) {
4 final TrophyItem trophy = (TrophyItem) list.getAdapter().getItem(i);
5 if (trophy.getRunnable() == null) {
6 trophy.setRunnable(new Runnable() {
7 public void run() {
8 // TODO Auto-generated method stub
9 Log.i("Trophy " + trophy.getName() + "-Runnable", "running...");
10 final int progress = trophy.getBar() != null ? trophy.getBar()
11 .getProgress() : 0;
12
13 // incr progress
14 trophy.getBar().setProgress(progress + 1);
15 // set text view percentage value
16 trophy.getTextView().setText(progress + 1 + " %");
17 handler.postDelayed(this, 750);
18
19 }
20 });
21 }
22 if (trophy.getRunnable() != null) {
23 if (!runnables.contains(trophy.getRunnable())) {
24 runnables.add(trophy.getRunnable());
25 }
26 }
27 }
28 } catch (Exception ex) {
29 ex.printStackTrace();
30 }
31 }
2 try {
3 for (int i = 0; i < list.getAdapter().getCount(); i++) {
4 final TrophyItem trophy = (TrophyItem) list.getAdapter().getItem(i);
5 if (trophy.getRunnable() == null) {
6 trophy.setRunnable(new Runnable() {
7 public void run() {
8 // TODO Auto-generated method stub
9 Log.i("Trophy " + trophy.getName() + "-Runnable", "running...");
10 final int progress = trophy.getBar() != null ? trophy.getBar()
11 .getProgress() : 0;
12
13 // incr progress
14 trophy.getBar().setProgress(progress + 1);
15 // set text view percentage value
16 trophy.getTextView().setText(progress + 1 + " %");
17 handler.postDelayed(this, 750);
18
19 }
20 });
21 }
22 if (trophy.getRunnable() != null) {
23 if (!runnables.contains(trophy.getRunnable())) {
24 runnables.add(trophy.getRunnable());
25 }
26 }
27 }
28 } catch (Exception ex) {
29 ex.printStackTrace();
30 }
31 }
Sobald ich
1trophy.getTextView().setText(progress + 1 + " %");
auskommentiere, funktioniert es. ich sehe wie meine Progressbar gefüllt wird. Setze ich den Text
der TextView aber ebenfalls, sieht es so aus, als ob er genau ein Update machen würde und dann "hängt" die Aktualisierung!
Kann mir jemand sagen was ich falsch mache?
Vielen Dank im Vorraus
Chris
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.