Java 使用数据库值设置TextView

Java 使用数据库值设置TextView,java,android,Java,Android,使用给定字符串和数据库中的某些值为textview设置文本的最佳做法是什么 我的主要活动: MyModel model; TextView title = (TextView) findViewById(R.id.tvTitle); title.setText("Username: ", model.getName()); 我的型号 private String name; public String getName() { return name; } 到目

使用给定字符串和数据库中的某些值为textview设置文本的最佳做法是什么

我的主要活动

MyModel model;

TextView title = (TextView) findViewById(R.id.tvTitle);
title.setText("Username: ", model.getName());
我的型号

private String name;

public String getName() {
    return name;
}

到目前为止,我还没有找到解决方案。

创建getter和setter是一个很好的实践,您可以在为模型定义变量后在Android Studio中自动生成getter和setter。除此之外,我不知道为什么在您的
getName()
中,您的方法想要返回一个long,而实际上您正在返回一个字符串。将
long
更改为
String

像这样:

  public String getName() {
        return mName;
    }

    public void setName(String name) {
        mName = name;
    }
该方法有多个签名,但您需要的签名是:

公共最终void setText(字符序列文本)

所以你可以做:

title.setText("Username: " + model.getName());
但是AS通常会在这些情况下抱怨,您应该避免在
setText()

中串联字符串 因此,您可以做的是:

String str = "Username: " + model.getName();
title.setText(str);

您也应该考虑存储诸如“代码>”用户名的文字值:“”,如:

<string name="username">Username:</string>

其他人关于在setText方法之外连接字符串的所有说法都是有效的。至于在活动或片段中的位置(本例中我使用的是片段),我使用以下约定:

在我的方法之外的类主体中声明我的类字段(用于类范围的访问)

然后,在片段膨胀后查找我的TextView引用,如果需要,立即设置其值

// ...
@override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

    View view = inflater.inflate(R.layout.fragment_container, container, false);

    titleView = view.findViewById(R.id.title);
    String titleStr = "Username: " + model.getName();
    titleView.setText(titleStr);

    return view;
}
// ...
如果我希望有问题的数据库值发生更改(例如,用户在设置中更新用户名),那么我可能还希望使用某些生命周期方法,这些方法在挂起片段(或活动)后恢复,但未完全重建时触发

// ...
@override
public void onResume() {

    titleStr = "Username: " + model.getName();
    titleView.setText(titleStr);

}
// ...
这里有一个关于的链接,如果你不熟悉它,这里有一个很好的概述。希望这有帮助

// ...
@override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

    View view = inflater.inflate(R.layout.fragment_container, container, false);

    titleView = view.findViewById(R.id.title);
    String titleStr = "Username: " + model.getName();
    titleView.setText(titleStr);

    return view;
}
// ...
// ...
@override
public void onResume() {

    titleStr = "Username: " + model.getName();
    titleView.setText(titleStr);

}
// ...