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

时间:2019-02-09 14:43:15

标签: java android id programmatically

如何在同一个类中找到那些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);
    }
}

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

嗯,您在这里不一定需要使用id,我向您展示了两种方法: 1-

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

i是您在1到5之前设置的值

2-

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

我这里是设置项的数量,意味着0是使用addView()方法添加的第一个textView

答案 2 :(得分:1)

使用常规的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
        }
    }
}