好吧,經過一番嘗試和搜索後,我找到了一個可以與我的代碼一起工作的解決方案。這裏有雲的這一點樣品:
private void updateTextView(ArrayList<Restaurant> restaurants, RestaurantAdapter itemsAdapter) {
Date date = new Date(); // given date
Calendar calendar = Calendar.getInstance(); // creates a new calendar instance
calendar.setTime(date); // assigns calendar to given date
int day = calendar.get(Calendar.DAY_OF_WEEK);
int hour = calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
int minutes = calendar.get(Calendar.MINUTE); // gets hour in 12h format
TextView title = (TextView) findViewById(R.id.openTag);
if(hour>=21) {
restaurants.get(0).changeOpenTag("Closed");
itemsAdapter.notifyDataSetChanged();
}
if (hour>= 9 && hour <= 15) {
title.setText("Lunch");
}
else {
title.setText("Dinner");
}
}
而且在onCreate方法我說:
Thread t = new Thread() {
@Override
public void run() {
try {
while (!isInterrupted()) {
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
updateTextView(restaurants, itemsAdapter);
}
});
}
} catch (InterruptedException e) {
}
}
};
t.start();
我不知道這是否是做的最有效的方法,但至少它工作正常:D
您可以添加一個刷新按鈕,當用戶單擊該按鈕時,重新檢查時間並根據此設置文本。或者你也可以使用服務或線程。 –
感謝您的快速回答。我希望它是自動的,而不是手動的。我會檢查線程和服務! – mCalado