0

各項目の時間を含むリストビューがあります。左に時間を表示し、右に残り時間を表示します。たとえば、午後 6 時を表示したいとします。現在は午後 4 時 53 分です。残り 1 時間 7 分を表示します。これは BaseAdapter に計算されます。

ここで、これらの残り時間を 30 秒ごとに更新したいと思います。それで、ランナブルでハンドラーを使用して notifyDataSetChanged() を呼び出そうとしましたが、データを更新する必要があると思います。そうしないと、notifyDataSetChanged() は何もしませんよね?

したがって、ここにいくつかのコードがあります:

私のアクティビティで実行可能:

private Runnable updateScreen = new Runnable() {
    public void run() {
                    //update of the current time
        rightNow = Calendar.getInstance();
        timeNow = rightNow.get(Calendar.HOUR_OF_DAY) * 60 + rightNow.get(Calendar.MINUTE);

        if(adapter != null)
                adapter.notifyDataSetChanged();

        handler.postDelayed(this, 30000);
    }
};

アクティビティでアダプターをインスタンス化する方法は次のとおりです。

adapter = new TimesAdapter(context, times, timeNow);

times は String[] であり、timeNow は int です。

何かアイデアはありますか?さらにコードが必要な場合は教えてください。

4

1 に答える 1

0

UI スレッドの外から notifyDataSetChanged() を呼び出すことはできません。呼び出しをハンドラーに移動すると、リストが更新されます。

于 2012-08-03T15:16:47.327 に答える