Bil*_*hon 42 events android event-handling listener addeventlistener
我需要设置一个简单的事件监听器来ListView偶尔刷新一次.问题是我不知道如何生成一个事件.
我知道对于像键或按钮按下的事件我只需要实现Handler.但在这种特定情况下,我实际上需要生成事件,每当我的应用程序的另一个运行线程醒来并刷新其RSS源的新闻列表时,将触发该事件.
我已经做了一切,但被困在这里.我可以获得任何建议或链接有关如何实现这一点的更多信息吗?
Sam*_*eer 90
定义回调接口
public interface NewsUpdateListener
{
void onNewsUpdate(<News data to be passed>);
}
Run Code Online (Sandbox Code Playgroud)在后台线程上提供注册工具,获取RSS源
class <Background processing class name>
{
....
ArrayList<NewsUpdateListener> listeners = new ArrayList<NewsUpdateListener> ();
....
public void setOnNewsUpdateListener (NewsUpdateListener listener)
{
// Store the listener object
this.listeners.add(listener);
}
....
}
Run Code Online (Sandbox Code Playgroud)有消息时触发回调
....
for (listener : listeners)
{
listener.onNewsUpdate(<News data to be passed>);
}
....
Run Code Online (Sandbox Code Playgroud)在初始化期间在某处注册侦听器
....
<class <Background processing class object>.registerListener
(
new OnNewsUpdateListener() {
onNewsUpdate(<News Data>) {
// process news data
runOnUIThread(new Runnable() {
public void run() {
// refresh list view
}
}
}
}
....
Run Code Online (Sandbox Code Playgroud)Hoj*_*jat 28
试试这个:
interface MyHandlerInterface
{
void onHandle(Object obj)
}
class myListClass
{
MyHandlerInterface myHandler;
public void setHandlerListener(MyHandlerInterface listener)
{
myHandler=listener;
}
protected void myEventFired(myObj)
{
if(myHandler!=null)
myHandler.onHandle(myObj);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87367 次 |
| 最近记录: |