Android - 每分钟实时更新自定义列表视图

时间:2016-07-05 15:05:32

标签: android listview

我知道为了更新Listview,我必须使用notifyDataSetChanged()。但是,我如何实时更新自定义Listview?

例如,我的应用程序在05h:10m:20s创建了Listview,40秒后它应该每隔一分钟更新Listview。换句话说,它应该确定当前时间是否已经改变了一分钟而不是更新Listview。我怎样才能做到这一点?

3 个答案:

答案 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);
}