問題描述
我需要設置一個簡單的事件偵聽器來不時刷新 ListView
.問題是我不知道如何生成事件.
I need to set up a simple event listener to refresh a ListView
once in a while. The problem is I don't know how could I generate an event.
我知道對于按鍵或按鈕按下等事件,我只需要實現 Handler
.但在這種特定情況下,我實際上需要生成事件,每次我的應用程序的另一個正在運行的線程喚醒并刷新其來自 RSS 提要的新聞列表時,都會觸發該事件.
I know that for events like key or button pressing I just need to implement the Handler
. But in this specific case I actually need to generate the event, which will be fired every time another running thread of my app wakes up and refreshes its list of news from an RSS feed.
我什么都做了,卻卡在了這里.我可以獲得任何建議或鏈接以提供有關如何實施此功能的更多信息嗎?
I've done everything, but got stuck in here. Can I get any suggestion or link with some more info on how to implement this?
推薦答案
定義回調接口
Define a callback interface
public interface NewsUpdateListener
{
void onNewsUpdate(<News data to be passed>);
}
在獲取 RSS 提要的后臺線程上提供注冊工具
Provide a registration facility on the background thread which gets the RSS feed
class <Background processing class name>
{
....
ArrayList<NewsUpdateListener> listeners = new ArrayList<NewsUpdateListener> ();
....
public void setOnNewsUpdateListener (NewsUpdateListener listener)
{
// Store the listener object
this.listeners.add(listener);
}
....
}
有消息時觸發回調
Fire the callback when news is available
....
for (listener : listeners)
{
listener.onNewsUpdate(<News data to be passed>);
}
....
在初始化期間在某處注冊監聽器
Register listener somewhere during initialization
....
<class <Background processing class object>.registerListener
(
new OnNewsUpdateListener() {
onNewsUpdate(<News Data>) {
// process news data
runOnUIThread(new Runnable() {
public void run() {
// refresh list view
}
}
}
}
....
這篇關于Android 應用上的自定義事件監聽器的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!