2016-07-05 11 views
0

Ich weiß, dass, um Listview aktualisieren muss ich notifyDataSetChanged() verwenden. Aber wie kann ich benutzerdefinierte Listview jede Minute in Echtzeit aktualisieren?Android - Update benutzerdefinierte Listenansicht jede Minute in Echtzeit

Zum Beispiel hat meine App Listview um 05h: 10m: 20s erstellt und nach 40 Sekunden sollte Listview alle eine Minute aktualisiert werden. Mit anderen Worten, es sollte bestimmen, ob sich die aktuelle Zeit um eine Minute geändert hat und dann Listview aktualisieren. Wie kann ich das erreichen?

+0

Sie Handler für diesen Zweck verwenden könnte zu nennen. Siehe [http://stackoverflow.com/questions/12916084/android-update-listview-items-every-1-minute](http://stackoverflow.com/questions/12916084/android-update-listview-items- alle 1 Minute) –

Antwort

3

Ich nehme an, Sie Ihre ListView jede Minute auf den zweiten 0. aktualisieren möchten Wenn nicht, sollten Sie andere Antworten verwenden.

Wenn ja, können Sie versuchen, Rundfunkempfänger für ACTION_TIME_TICK registrieren.

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction(Intent.ACTION_TIME_TICK); 

Context.registerReceiver(new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     adapter.notifyDataSetChanged(); 
    } 
}, intentFilter); 

Vergessen Sie nicht, Context.unregisterReceiver() bei onStop() Ihrer Activity

+0

Ja, genau das suche ich. Vielen Dank! – gigs

0

sollten Sie etwas wie folgt aus:

private ListView listView; 

final Runnable r = new Runnable() { 
    public void run() { 
     adapter.notifyDataSetChanged(); 
     listView.postDelayed(this, 60000); 
    } 
}; 

listView.postDelayed(r, 60000); 
0

funktioniert ziemlich gut!

private ListView listView; 
private ListViewAdapter listViewAdapter; 
private Handler mainHandler; 

//.... 
//Call method when start updating 

public void updateListShedule() { 
    if (handler == null) { 
     handler = new Handler(getApplicationContext().getMainLooper()) 
    } 
    handler.postDelayed (new Runnable() { 
     public void run() { 
      adapter.notifyDataSetChanged(); 
      updateListShedule(); 
     } 
    }, 10000); 
} 
Verwandte Themen