如何在android中的TextView中更新一行中的文本



我有一个TextView,我在其中发布状态消息,如

Device found.
Device connected. 
Syncing with device (Syncing %).
Device disconnected.

我正在使用TextView.append((将这些状态消息发布到TextView。如何更新"与设备同步"(Syncing%(行中的百分比同步值(我不想添加具有新sycn值的新行(。有可能吗?如果没有,我应该使用什么视图组件来实现这种效果?

您可以使用ObservableField<String>()作为文本字段的值。继续更新值。使用数据绑定将此值绑定到xml中的文本视图。

每当您想要更新值时,只需对字段变量调用set("YOUR_VALUE"),并在YOUR_VALUE的位置设置所需的文本。这将自动刷新您的视图。它将是一个干净、可读和可维护的代码。

示例:

Kotlin文件:

var syncFieldText = ObservableField<String>()
syncFieldText.set("Syncing.")

XML:

<layout>
<data>
<variable
name="item"
type="YOUR_PACKAGE.MODEL_OR_VIEWMODEL" />
</data>
.
.
.
<ConstraintLayout>
<TextView
.
.
android:text="@{item.syncFieldText}"
.
/>
</ConstraintLayout>
</layout>

我的例子只针对一行。对于多条线路也可以实现相同的效果。您可以使用相同的可观察对象更新整个文本视图本身。

正如您提到的,您正在使用TextView.append((来发布这些消息。

但是您应该使用TextView.setText((来更新其中的任何值。

TextView.setText("Syncing with device" + (Syncing %));
view.invalidate();           //for refreshment

最新更新