Android 如何引用通过代码创建的文本视图?

Android 如何引用通过代码创建的文本视图?,android,dynamic,reference,generated,Android,Dynamic,Reference,Generated,以下是我为TextView编写的代码。 我想从其他类或同一类中引用它,但我找不到一种方法来确定它;如中所示,我希望根据输入更改值。这是动态创建TextView的代码 public TextView descriptionTextView(Context context, String text) { final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WR

以下是我为
TextView
编写的代码。
我想从其他类或同一类中引用它,但我找不到一种方法来确定它;如中所示,我希望根据输入更改值。

这是动态创建TextView的代码

public TextView descriptionTextView(Context context, String text) {
        final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        final TextView textView = new EditText(context);
        textView.setLayoutParams(lparams);
        textView.setTextSize(10);
        textView.setTextColor(Color.rgb(0,0,0));
        textView.setText(" " + text + "");
        textView.setMaxEms(8);
        textView.setKeyListener(null);
        textView.setFocusableInTouchMode(false);
        textView.setEnabled(false);
        return textView;
    }
下面是从相同/不同类调用它的方法:

LinearLayout layout = findViewById(R.id.linearLayout);

TextView view = descriptionTextView(this, "Sample text");
layout.addView(view);

在Android中,创建其他XML文件的视图不是首选方法。 最好的方法是在XML文件中创建此TextView,并使用其id链接它。 像这样

public TextView descriptionTextView(Context context, String text){
    ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    final TextView textView = new TextView (context); //Change this to TextView
    textView.setLayoutParams(lparams);
    textView.setTextSize(10);
    textView.setTextColor(Color.rgb(0,0,0));
    textView.setText(" " + text + "");
    textView.setMaxEms(8);
    textView.setKeyListener(null);
    textView.setFocusableInTouchMode(false);
    textView.setEnabled(false);
    return textView;
}
<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView"
    />

如果此方法没有帮助,并且您仍然希望在Java文件中创建视图,则将其公开并超出函数边界,以使其在任何地方都可以访问。

TextView
一个id,然后通过id访问TextView,如下所示-

给出id,如
textView.setId(1)

假设textView的布局是线性布局

您可以使用以下代码按id获取textView-

public TextView descriptionTextView(Context context, String text) {
        final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        final TextView textView = new EditText(context);
        textView.setLayoutParams(lparams);
        textView.setTextSize(10);
        textView.setId(1);
        textView.setTextColor(Color.rgb(0,0,0));
        textView.setText(" " + text + "");
        textView.setMaxEms(8);
        textView.setKeyListener(null);
        textView.setFocusableInTouchMode(false);
        textView.setEnabled(false);
        return textView;
    }

希望这有帮助

您必须使用此方法在运行时将
TextView
添加到某些布局中。因此,您可以在运行时通过读取该布局的子视图再次找到它,然后将
视图
转换为
文本视图
,并更新数据。
public TextView descriptionTextView(Context context, String text) {
        final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        final TextView textView = new EditText(context);
        textView.setLayoutParams(lparams);
        textView.setTextSize(10);
        textView.setId(1);
        textView.setTextColor(Color.rgb(0,0,0));
        textView.setText(" " + text + "");
        textView.setMaxEms(8);
        textView.setKeyListener(null);
        textView.setFocusableInTouchMode(false);
        textView.setEnabled(false);
        return textView;
    }
TextView tv = (TextView)view.findViewById(1); // view is LinearLayout object