0

在我的应用程序中,我有一个带有文本和附加变量的按钮。例如 - “收件箱 20”,其中 20 是一个变量。

每分钟我都会在一个单独的线程上进行同步并获取收件箱消息的新值。

每当我获得新价值时,我都会这样做

b.setText("Inbox" + numMails); //where numMails is an int retrieved from the server.

我的问题是,有没有办法让“收件箱”部分永远保持静止,然后添加 numMails ?

4

2 回答 2

1

由于Button' 的文本无法部分更新,因此这是不可能的。

但是我假设您只是因为不重写"Inbox " +部分而想要实现这一点。

所以你可以通过提取这样的方法来实现这一点:

private void setInboxButtonText(int numMails) {
   StringBuilder sb = new StringBuilder();
   sb.append("Inbox ");
   sb.append(String.valueOf(numMails));
   b.setText(sb.toString());
}

并在您更新该Button文本的任何地方使用此方法。

此外,如果您正在寻找更抽象的结构,那么我建议您android.widget.Button像这样扩展类:

public class InboxButton extends Button {
   @Override
   public void setText(int numMails) {
       StringBuilder sb = new StringBuilder();
       sb.append("Inbox ");
       sb.append(String.valueOf(numMails));
       super.setText(sb.toString());
   }
}

并在定义收件箱按钮时使用此类。

于 2013-10-18T22:24:35.617 回答
0

你可以这样做:

b.setText(b.getText().split(" ")[0] + " " + numMails);
于 2013-10-18T19:44:04.147 回答