我有一个名为int
的{{1}}变量。我想在值改变时做些什么。
例如:
mCurrentIndex
答案 0 :(得分:0)
如果mCurrentIndex的作用域仅在MainActivity中,那么我认为最好是为mCurrentIndex创建getter和setter方法,并在setter方法的末尾调用onCurrentIndexValueChange()
public int getIndex(){
return this.mCurrentIndex;
}
public void setIndex(int value){
this.mCurrentIndex = value;
this.onCurrentIndexValueChange();
}
答案 1 :(得分:0)
您可以使用设置器功能
private int mCurrentIndex = 1;
public void setCurrentIndex(int newValueFormCurrentIndex)
{
if(newValueFormCurrentIndex != mCurrentIndex)
{
onCurrentIndexValueChange();
mCurrentIndex = newValueFormCurrentIndex;
}
}
答案 2 :(得分:0)
解决此问题的一种方法是使用Android's LiveData。
根据您的情况,由于您想观察int
,因此可以执行以下操作:
public MutableLiveData<Integer> mCurrentIndex = new MutableLiveData<>();
要更改您的价值,请执行以下操作:
mCurrentIndex.setValue(12345); // Replace 12345 with your int value.
要观察更改,您将do the following:
mCurrentIndex.observe(this, new Observer<Integer>() {
@Override
public void onChanged(@Nullable final Integer newIntValue) {
// Update the UI, in this case, a TextView.
mNameTextView.setText("My new current index is: " + newIntValue);
}
};);
}
这种方法很有用,因为您可以定义一个ViewModel来将逻辑与Activity隔离开,同时让UI观察并反映发生的更改。
通过将逻辑与ViewModel分开,您的逻辑变得更易于测试,因为为ViewModel编写测试比为Activity编写测试相对容易。
有关LiveData的更多信息,请查看此link。