查找以编程方式创建的 TextView?

Find TextView which was created programmatically?

我怎样才能在相同的 class 上找到那些 TextView 的另一个功能? 创建后我将使用setText()serBackgroundColor()

此代码部分在 CreateDesign() 上,此函数 calling onCreate():

public class MainActivity extends AppCompatActivity {

private LinearLayout linearLayout;
private TextView textView;

public void CreateDesign(){

   linearLayout = (LinearLayout) findById(R.id.linearLayout);

   for(int i = 1; i <= 5; i++){
        textView = new TextView(this);
        textView.setId(i);
        textView.setText(i + ". TextView");
        
        linearLayout.addView(textView);
    }
}

您可以创建此 TextView 的成员变量,然后可以在此 class 中使用,或者您可以在 LinearLayout 上使用 findViewById()。

好吧,你不一定需要在这里使用id我告诉你两种方法: 1-

TextView textView = (TextView) linearLayout.findViewById(i);

i是你之前设置的1到5

2-

TextView textView = (TextView) linearLayout.getChildAt(i);

i这里是set item的个数表示0是第一个使用addView()方法添加的textView

使用正常的findViewById()方法。您为 TextView 提供了从 1 到 5 的唯一 ID,因此您可以通过向 findViewById().

提供 1-5 来找到这些 TextView

但是,您可能不应该这样做,并且您不应该拥有全局 textView 变量(它只会保存对最后创建的 TextView 的引用)。

相反,请尝试使用 ArrayList 并将所有 TextView 添加到其中。那么你就不需要给他们不符合标准的 ID。

public class MainActivity extends AppCompatActivity {

    private LinearLayout linearLayout;
    private ArrayList<TextView> textViews = new ArrayList<>();

    public void CreateDesign(){

        linearLayout = (LinearLayout) findById(R.id.linearLayout);

        for(int i = 1; i <= 5; i++) {
            TextView textView = new TextView(this);
            textView.setText(i + ". TextView");

            linearLayout.addView(textView);
            textViews.add(textView); //add it to the ArrayList
        }
    }
}