我知道为了更新Listview,我必须使用notifyDataSetChanged()
。但是,我如何实时更新自定义Listview?
例如,我的应用程序在05h:10m:20s创建了Listview,40秒后它应该每隔一分钟更新Listview。换句话说,它应该确定当前时间是否已经改变了一分钟而不是更新Listview。我怎样才能做到这一点?
答案 0 :(得分:3)
我想你想在第二个时刻每分钟更新ListView
。如果没有,你应该使用其他答案。
如果是这样,您可以尝试注册ACTION_TIME_TICK
的广播接收器。
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);
不要忘记在Context.unregisterReceiver()
的{{1}}致电onStop()
答案 1 :(得分:0)
你应该这样:
private ListView listView;
final Runnable r = new Runnable() {
public void run() {
adapter.notifyDataSetChanged();
listView.postDelayed(this, 60000);
}
};
listView.postDelayed(r, 60000);
答案 2 :(得分:0)
效果很好!
private void populateListViewFromDatabase() {
DBAdapter db = new DBAdapter(this);
db.open();
Cursor c = db.retrieveAllEntriesCursor();
String[] from = {DBAdapter.ENTRY_TITLE, DBAdapter.ENTRY_DESTINATION};
int[] to = {R.id.tvAlarmTitle, R.id.tvAlarmDestination};
SimpleCursorAdapter myCursorAdapter = new SimpleCursorAdapter(this,R.layout.custom_alarm_destination_row,c,from,to);
db.close();
lvDestinations.setAdapter(myCursorAdapter);
}