Automatically/dynamically 更新 Android 中的 TextView 文本

Automatically/dynamically update TextView text in Android

我有一个 android 应用程序,我决定重写,重写的原因之一是因为我可以有 10 多个 TextViews,其文本集基于 class 中的变量例如:

MyClass myClass = new MyClass();
myClass.myNumber = 5;   // inside MyClass - public int myNumber;

LinearLayout mainLayout = (LinearLayout) view.findViewById(R.id.mainLayout);

TextView myTextView = new TextView(getActivity());  //In a fragment
myTextView.setText(String.format("myNumber currently has a value of %d", myClass.myNumber));

mainLayout.addView(myTextView);
return view;

到目前为止,我一直在更改 myNumber 的 buttons/views 上使用 .setOnClickListener,以便在 myNumber 的值更改时再次设置视图的文本,然后调用 .invalidate() 重绘TextView,这工作得很好,但我经常使用这种方法并且代码变得非常重复并且更改一个整数会影响很多视图(所有视图都以不同的方式使用它 - 例如不同的措辞或计算(例如 myNumber * 2))。我猜是因为它在 TextView 中创建了一个不可变字符串。

我尝试创建一个实现 Observer 的自定义 TextView(使 MyClass 扩展 Observable),并且在更新方法中我可以让它自身因刷新而失效,但它仍然具有相同的文本。我还尝试创建单个元素数组,试图传递引用而不是值,希望当它被更改然后视图无效时它会获取新值但文本最终仍然保持不变。

如何获得一个 TextView,它会在 myNumber 的值发生变化时自动更新?某种绑定?

Bindroid 非常适合这个,只是给用户的一个注释,使用片段示例应用程序正在使用 Activity 中的 this 所以绑定方法使用 Activity被调用,所以在我使用 getActivity() 的片段中导致它无法正常工作,在库中挖掘我发现了一个绑定方法,它接受一个 View 并传入我的 view 它被膨胀了片段,效果很好!!!这非常容易集成,顺便说一句,只是我不明白!