Java 更改TextView的文本,然后以编程方式使用布局?
我的布局如下:Java 更改TextView的文本,然后以编程方式使用布局?,java,android,Java,Android,我的布局如下: <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/label" android:layout_width="match_parent" android:layout_height="wrap_content" android:text
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Select an option" />
我按如下方式初始化上述类:
NothingSelectedSpinnerAdapter myAdapter = new NothingSelectedSpinnerAdapter(spinnerAdapter, R.layout.layout_pasted_above, getContext());
myAdapter.setAdapter(spinnerAdapter);
但是,我希望能够以编程方式更改上述布局的文本
我将如何实现这一点
-
显然,StackOverflow需要更多的文字来提交这篇文章,但我没有其他重要的细节要添加,所以我只是添加了这个文本,这样我才能真正提交它。获取小部件的id,并将其设置为java类中的textview变量
TextView variable= (TextView)findViewById(R.id.label);
然后将文本设置为所需的任何字符串
variable.setText("insert your text");
在膨胀方法后,您必须在此处获取TextView的引用
protected View getNothingSelectedView(ViewGroup parent) {
View nothingSelectedView = layoutInflater.inflate(nothingSelectedLayout,
parent, false);
TextView labelText =(TextView)nothingSelectedView.findViewById(R.id.label);
labelText.setText("Set You Text Here");
return nothingSelectedView;
}
只需创建一个字段,并公开一个公共方法
protected View getNothingSelectedView(ViewGroup parent) {
View nothingSelectedView = layoutInflater.inflate(nothingSelectedLayout,
parent,
false);
textViewField = (TextView) nothingSelectedView.findViewById(R.id.label);
return nothingSelectedView;
}
// Expose public method
public void changeText(String text) {
textViewField.setText(text);
}
无论从哪里打电话
adapter.changeText("new text");
这是行不通的,因为此处引用布局的方式:
NothingSelectedSpinnerAdapter myAdapter=new NothingSelectedSpinnerAdapter(spinnerAdapter,R.layout.layout_粘贴在上面,getContext())代码>。我相信我需要膨胀版面,更改文本,然后以某种方式引用上面代码中膨胀的版面。TextView
是否属于此版面R.layout。上面粘贴的版面?@Greggz是的,这没有帮助,因为我希望能够使其尽可能灵活。在该方法中设置文本意味着我不能为不同的微调器设置不同的文本。它是相同的textView。。我们没有添加新的文本视图,而是获取文本视图的引用。是的,但我有多个微调器,我希望它们都有不同的文本。在你的方法中这样做意味着我所有的微调器都有相同的文本。在问题中你没有提到这一点。。您可能需要保留一些数据结构来跟踪所选项目。if(selected){//set desired value}else默认值尝试调用空对象引用上的虚拟方法'void android.widget.TextView.setText(java.lang.CharSequence)'
行textViewField.setText(text)代码>您的textViewField为空。你用对身份证了吗?我使用R.id.label
作为占位符。用你的真枪是的,我已经仔细检查过了。。尝试textViewField=(TextView)parent.findViewById(R.id.label)
Odd,同样的事情
adapter.changeText("new text");