如何为变量android创建自定义监听器?

时间:2014-11-04 21:10:18

标签: java android listener

我正在尝试为变量创建一个自定义侦听器,该变量会不断变化,并希望每次记录更改时都跟踪它并更新我的显示(TextView)。我参考了In Android, how do I take an action whenever a variable changes? 但是,这只运行一次。我希望它能够持续跟踪更改并在状态更改时更新显示。

2 个答案:

答案 0 :(得分:9)

我可以想到很多方法可以做到这一点,但我认为最简单的方法就是创建一个变量的包装器,你要去"听"实现getter和setter,当然还有listener接口。 让你想要"听"到一个int变量:

public interface OnIntegerChangeListener
{
    public void onIntegerChanged(int newValue);
}

public class ObservableInteger
{
    private OnIntegerChangeListener listener;

    private int value;

    public void setOnIntegerChangeListener(OnIntegerChangeListener listener)
    {
        this.listener = listener;
    }

    public int get()
    {
        return value;
    }

    public void set(int value)
    {
        this.value = value;

        if(listener != null)
        {
            listener.onIntegerChanged(value)
        }
    }
}

然后你就可以使用它了:

ObservableInteger obsInt = new ObservableInteger();

obsInt.setOnIntegerChangeListener(new OnIntegerChangeListener()
{
    @Override
    public void onIntegerChanged(int newValue)
    {
        //Do something here
    }
});

每次更改值(使用Set(...))时,将调用侦听器(如果不为null) -

答案 1 :(得分:0)

您可以采取的另一个选择(可能更复杂)是创建服务(http://developer.android.com/guide/components/services.html

基本上,您在后台创建一个“活动”,在该背景中您创建一个循环,定期检查变量是否已更改(或者您需要在活动上创建公共方法),如果变量有变化,你可以采取行动。

对我来说,这里提出的其他选项对我来说听起来更合理,但是你提到这对你不起作用。