如何在android中创建可变数量的textviews

Posted

技术标签:

【中文标题】如何在android中创建可变数量的textviews【英文标题】:How to create a variable number of textviews in android 【发布时间】:2013-06-14 03:36:24 【问题描述】:

希望这不是一个坏问题,不过我已经搜索过 S.O.并且无法找到答案。

我正在创建一个本质上是一个闹钟的 android 应用程序。我希望主要活动显示所有已创建的警报以及有关警报的一些信息。我的问题是如何根据已创建的警报数量创建给定数量的文本视图。例如,如果用户创建(而不是删除)5 个警报,我如何让它显示 5 个文本视图,而不仅仅是硬编码的文本视图数量?以下是我用于测试功能的硬编码原型(除了这个挂断)。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".Launch" >

    <ScrollView
        android:orientation="vertical"
        android:layout_
        android:layout_>
        <LinearLayout android:orientation="vertical" 
                      android:layout_ 
                      android:layout_>

            <TextView
                android:orientation = "vertical"
                android:layout_
                android:layout_
                android:text="Time"/>
                    <View
                    android:layout_
                    android:layout_
                    android:id="@+id/separator"
                    android:visibility="visible"
                    android:background="@android:color/darker_gray"/>

            <TextView
                android:orientation = "vertical"
                android:layout_
                android:layout_
                android:text="Time"/>
                    <View
                    android:layout_
                    android:layout_
                    android:id="@+id/separator"
                    android:visibility="visible"
                    android:background="@android:color/darker_gray"/>

            <TextView
                android:orientation = "vertical"
                android:layout_
                android:layout_
                android:text="Time"/>
                    <View
                    android:layout_
                    android:layout_
                    android:id="@+id/separator"
                    android:visibility="visible"
                    android:background="@android:color/darker_gray"/>


        </LinearLayout>

    </ScrollView>


</RelativeLayout>

如您所见,只有三个硬编码的文本视图,而不是用户创建的多个文本视图。

再次,我希望这不是一个问题或一个在其他地方发布了答案但我搜索它但找不到任何东西的问题。

提前致谢!

【问题讨论】:

您需要以编程方式执行此操作,而不仅仅是通过 xml。 你可以使用 listview 和 cursoradapter 来代替 scrollview。我的意思是如果你将警报保存在 db 中,那么你可以使用 listview 和 cursoradapter 来显示警报 看看我的回答对你有没有帮助。由于您是 SO 新手,请查看tour。 【参考方案1】:

您可以通过编程方式执行此操作:

int size = numAlarms; // total number of TextViews to add

TextView[] tv = new TextView[size];
TextView temp; 

for (int i = 0; i < size; i++) 

    temp = new TextView(this);

    temp.setText("Alarm: " + i); //arbitrary task

    // add the textview to the linearlayout
    myLinearLayout.addView(temp);

    tv[i] = temp;

【讨论】:

所以为了确保我理解正确,在使用您建议的编程解决方案时,我还需要在代码的早期以编程方式添加线性布局,或者我可以将它添加到 xml以某种方式参考?或者我想我可以通过以下方式检索我的 xml 线性布局:LinearLayout linearLayout = (LinearLayout) findViewById(R.id.IdToBeSetInXml);

以上是关于如何在android中创建可变数量的textviews的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 C++ 中创建可变长度数组吗

如何在 SwiftUI 文本元素中创建可变字符串?

如何在 node.js 中的 paypal 中创建可变的定期付款

如何在一个可在外面访问的struct中创建一个可变参数模板?

如何在Controller中创建不可变的BusinessLayer而不更改其属性?

如何知道在 XGBoost 中创建的树的数量