【问题标题】:Adding TextView to Layout programmatically using for loop使用 for 循环以编程方式将 TextView 添加到布局
【发布时间】:2021-05-19 15:37:24
【问题描述】:

所以我在 Udacity 学习了 Google 的 Android 基础课程。在 onCreate 方法的其中一课中,他们制作了字符串的 ArrayList,并将值从“一”增加到“十”。之后,他们制作了 LinearLayout 变量,并使用 for 循环将 TextViews 添加到该布局中。这是整个代码的样子:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_numbers);

        ArrayList<String> words = new ArrayList<>();
        words.add("one");
        words.add("two");
        // ...
        words.add("ten");

        LinearLayout rootView = findViewById(R.id.root_view);

        for (int i = 0; i < words.size(); i++) {
            TextView wordView = new TextView(this);
            wordView.setText(words.get(i));
            rootView.addView(wordView);
        }
    }

他们没有解释,我们如何在 for 循环中添加十个具有相同名称“wordView”的 TextView?

【问题讨论】:

  • wordView 只是变量名,而不是 android:id 上的 id,就像您在 xml 上创建它们一样。这只是创建视图的一种方式,但之后您无法引用它们。

标签: java android android-studio textview android-linearlayout


【解决方案1】:

正如@javdromero 在评论中所说,wordView 只是TextView 视图对象的参考。我们只是在创建一个TextView 对象。在上面设置文本并将其添加到rootViewrootView 只是您示例中 LinearLayout 的参考名称。如果引用名称将为视图对象设置 ID,则无。 wordView 的范围仅限于执行 for 循环迭代时的每个循环,一旦索引增加,您就会将另一个视图对象引用分配给 wordView

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多