通知该值已更改

时间:2014-01-19 17:07:55

标签: java android

我在Android上写无线电播放器。我想在GUI中使用RDS功能和显示文本。我有管理无线电及其功能的对象。当某些内容发生变化时,比如RDS文本,我想在Activity里面的简单TextBox中发布它。我如何通知GUI其中一个属性已更改(并发送新值),我必须刷新该属性? Android内部是否有提供此类异步通知功能的机制?我读过 PropertyChangeListener但这是JavaBeans的机制,我可以采用吗?如果是,请告诉我如何在我的案例中注册和使用更改侦听器。

3 个答案:

答案 0 :(得分:0)

您可以使用Observer Design Pattern

答案 1 :(得分:0)

答案 2 :(得分:0)

创建一个这样的类:

abstract class RDSTextListener {
    public abstract void onRDSTextChanged(String newText);
}

从您的活动中执行以下操作:

RDSTextListener listener = new RDSTextListener() {

    public void onRDSTextChanged(String newText) {

         runOnUiThread(new Runnable() { 
         @Override
         public void run() {

         ((TextView)findViewById(R.id.your_text_view)).setText(newText);

         }});
    }

}

您必须将此侦听器传递给您的业务类。然后,业务类将在适当的时候调用on RDSTextChanged(),并且UI将被更新。

编辑:注意,这不使用接口。而是一个抽象类。我认为Android更友好,避免不必要的处理能力。