Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Wie programmiere ich eine sich peridisch aktualisierende Liste?

Das Thema "Wie programmiere ich eine sich peridisch aktualisierende Liste?" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 07.02.2010, 12:05   #1 (permalink)
Neuer Benutzer

Registriert seit: 07.02.2010
Beiträge: 4
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Reden Wie programmiere ich eine sich peridisch aktualisierende Liste?

Hallo zusammen

Noch ein Neuling - aber nicht weniger enthusiastisch ;-)

Ich versuche Folgendes:

1. Eine initial leere List<String>
2. Periodisch (z.B. alle 2 Minuten) ein Element hinzufügen
3. Bei jedem Hinzufügen soll der Andriod-Listview aktualisiert werden


Und hier meine Fragen:

a) Wie füge ich periodisch im Hintergrund alle 2 Minuten ein Element hinzu?
b) Wie sorge ich dafür, dass der View aktualisiert wird?

Vielen Dank für jede Hilfe im Voraus.
aka
arga8361 ist offline   Mit Zitat antworten
Alt 07.02.2010, 12:12   #2 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

a) timer
b) adapter

guck dir diese sachen an, dann hast du alles was du brauchst
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei swordi für diesen Beitrag:
arga8361 (07.02.2010)
Alt 07.02.2010, 12:23   #3 (permalink)
Fortgeschrittenes Mitglied

Modell: Samsung Galaxy S I9000

Registriert seit: 12.09.2009
Beiträge: 444
Abgegebene Danke: 41
Erhielt 49 Danke für 36 Beiträge
Standard AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

Zitat:
Zitat von arga8361 Beitrag anzeigen
a) Wie füge ich periodisch im Hintergrund alle 2 Minuten ein Element hinzu?
b) Wie sorge ich dafür, dass der View aktualisiert wird?
Kannst du beides über ne Thread-Klasse lösen.

Code:
 class MeinThread extends Thread
    {    	
    	public void run()
    	{    		
    		while(_run)
    		{
    			try
    			{
                                _view.extendList(); // eigene Methode die das neue Item hinzufügt
   				_view.postInvalidate(); // View updaten
      			        _thread.sleep(/* Zeit in ms */); // Pause
    			}
    					
    			} catch (InterruptedException e) {}
    		}
    	}
    }
Und die ganze Klasse dann als Objekt hinzufügen:

Code:
private MeinThread _thread = new MeinThread();
_thread.start();
Link's zum Thema:
- Using threads and ProgressDialog | Hello Android
- Simple GoogleMaps with Threads :: anddev.org - Android Development Community | Android Tutorials
- das beispiel Programm LunarLander aus der SDK anschauen

mfg
Zonnex ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei Zonnex für diesen Beitrag:
arga8361 (07.02.2010)
Alt 07.02.2010, 22:47   #4 (permalink)
Neuer Benutzer

Registriert seit: 07.02.2010
Beiträge: 4
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Unglücklich AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

Hi

Besten Dank für die Antwort.

Was jetzt klappt ist Folgendes (übrigens: Wie mache ich hier schönes Java-Syntax-Highlighting mit BBcode ):

Code:
package sas.android;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class Android005ThreadTest extends Activity implements Runnable {
 private String message;
 private TextView tw;
 // private TextView tv;
 // private ProgressDialog pd;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  this.tw = (TextView) findViewById(R.id.mytext);
  this.tw.setText("Hello");
  Thread thread = new Thread(this);
  thread.start();
 }
 public void run() {
  for (int i = 1; i < 100; i++) {
   try {
    Thread.sleep(800);
    this.message = "Now: " + i;
    this.handler.sendEmptyMessage(0);
   } catch (InterruptedException e) {
   }
  }
 }
 private Handler handler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
   tw.setText(message);
  }
 };
}

Um zu modularisieren, möchte ich nun die ganze Thread-Geschichte in eine eigene Klasse packen, so wie von Dir vorgeschlagen. Allerdings verstehe ich das Folgende noch nicht:
  1. Wo ist die MeinThread-Klasse in Deinem Beispiel? In der Activity-Klasse selbst? Oder ist das eine ausgekoppelte Klasse in einer eigenen Datei?
  2. In Deinem Beispiel benutzt eine Underscore-Konvention, die ich nicht kenne (z.B. "_run"). Wo kann ich was darüber lesen?
Meine eigenen Versuche, die Klasse zu koppeln, schlagen fehl:

Code:
package sas.android;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class Android005ThreadTest extends Activity {
 private String message;
 private TextView tw;
 
 private Handler handler = new Handler() {
  public String buffer;
  @Override
  public void handleMessage(Message msg) {
   tw.setText(message);
  }
 };
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  this.tw = (TextView) findViewById(R.id.mytext);
  this.tw.setText("Hello");
  MeinThread thread = new MeinThread(handler,message);
  thread.start();
 }
}
und die abgekoppelte Klasse:

Code:
package sas.android;
import android.os.Handler;
public class MeinThread extends Thread {
 private Integer i;
 private Handler handler;
 private String message;
 public MeinThread(Handler h, String message) {
  this.handler = h;
  this.message = message;
  this.i = 0;
 }
 public void run() {
  while (true) {
   try {
    this.i++;
    this.message = "Now:" + i;
    this.handler.sendEmptyMessage(0);
    sleep(200);
   } catch (InterruptedException e) {
   }
  }
 }
}
Gerade letztere ist wahrscheinlich totaler Schrott (sorry, bin halt Noob ;-) ). Mir scheint, dass das Threading zwar klappt, aber ich habe keine Ahnung, wie ich den Textview in der Activity setzten soll. Meine hilflosen Versuche seht Ihr ja oben.

Was mache ich falsch, bzw. wie mache ich es richtig?

Besten Dank für Eure Hilfe!

aka
arga8361 ist offline   Mit Zitat antworten
Alt 08.02.2010, 09:08   #5 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

hmm in der überschrift steht, du willst eine liste machen und dann kommt im ganzen code keine liste vor ? irgendwie komisch denke ich ?
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Alt 08.02.2010, 09:12   #6 (permalink)
Neuer Benutzer

Registriert seit: 07.02.2010
Beiträge: 4
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Standard AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

Hey, gut erkannt!

Eins nach dem anderen, wie Du siehst, benutzte ich auch noch keinen ListView. Ich will erst einmal verstehen, wie das mit dem Threading funzt, dann kommt die Liste ;-)
arga8361 ist offline   Mit Zitat antworten
Alt 08.02.2010, 09:28   #7 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

vielleicht ist aber die verbindung der beiden sachen über adapter einfacher, als das was du hier versuchst
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Alt 08.02.2010, 09:32   #8 (permalink)
Neuer Benutzer

Registriert seit: 07.02.2010
Beiträge: 4
Abgegebene Danke: 2
Erhielt 0 Danke für 0 Beiträge
Standard AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

Zitat:
Zitat von swordi Beitrag anzeigen
vielleicht ist aber die verbindung der beiden sachen über adapter einfacher, als das was du hier versuchst
Du, ich bin wirklich seeehr Neuling ... und für jedes Beispiel seeehr dankbar ;-) will heissen: Kannst Du ein Stück Code posten?

Thnks
arga8361 ist offline   Mit Zitat antworten
Alt 08.02.2010, 09:33   #9 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

aja

wenn du alle immer nach x zeitabständen etwas tun willst, dann tu es lieber mit einem handler als mit thread.sleep().
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Alt 08.02.2010, 11:15   #10 (permalink)
Android Guru
 
Benutzerbild von SeraphimSerapis

Modell: Galaxy Nexus, Galaxy Note, Galaxy Tab 10.1N, G-Slate

Registriert seit: 27.02.2009
Beiträge: 3.230
Abgegebene Danke: 206
Erhielt 1.216 Danke für 308 Beiträge
Standard AW: Wie programmiere ich eine sich peridisch aktualisierende Liste?

Zitat:
Zitat von swordi Beitrag anzeigen
aja

wenn du alle immer nach x zeitabständen etwas tun willst, dann tu es lieber mit einem handler als mit thread.sleep().
Auch hier wieder meine Zustimmung. Thread.sleep() verbraucht mehr Speicher im Background als ein Handler, welcher für eine regelmäßige Aktualisierung sorgt.

Dafür sollte man natürlich sich auch genau vor Augen halten, wie ein Thread bei Java funktioniert.
SeraphimSerapis ist offline   Mit Zitat antworten
Antwort

Stichworte
android, list, liste, listview

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Wie programmiere ich Plugins? Samsung I7500 Android App Entwicklung 14 19.10.2011 09:59
Wie installiere ich eine App? [Gelöst] Silverback Motorola Milestone Forum 6 02.02.2010 00:42
Wie signiere ich eine apk ? MarcoNieddu Android App Entwicklung 10 10.08.2009 14:14
Wie baue ich mir so eine Map-Item-Navigation sumdroid Android App Entwicklung 4 24.04.2009 14:38
Wie bekomme ich eine Verknüpfung zu einer Datei auf meinen ahome Desktop? joschijoschi Sonstige Apps & Widgets 0 01.04.2009 20:21




Du liest gerade: "Wie programmiere ich eine sich peridisch aktualisierende Liste?" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.