Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改TextView的文本,然后以编程方式使用布局?_Java_Android - Fatal编程技术网

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");