ProgressBar & TextView update Problem

  • Antworten:3
Christian Dud
  • Forum-Beiträge: 3

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:

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 }

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

Antworten
Stefan S.
  • Forum-Beiträge: 560

31.05.2011, 13:02:12 via Website

Hast du schon mal versucht den Textupdate via handler.post() zu lösen?

Antworten
Christian Dud
  • Forum-Beiträge: 3

31.05.2011, 13:28:37 via Website

Hi!,

ich habs grade mal ausprobiert:

statt
1handler.postDelayed(this, 750);]
[/code]

hab ich es versucht mit
1[handler.pos(this);]
[/code]

hat leider keinen unterschied gemacht :(

— geändert am 31.05.2011, 13:30:03

Antworten
Stefan S.
  • Forum-Beiträge: 560

01.06.2011, 08:15:06 via Website

Hmmm, das ist schon komisch.

Würde es ev. gehen, wenn du einen Dialog startest mit der Progressbar, aber statt der TextView einfach den Titel oder die Message aktualisieren würdest?
So habe ich das bei mir gemacht. Das klappt.

Antworten