使用 Kotlin 为 Android 动态生成带有按钮的 table

Dynamically generating a table with buttons using Kotlin for Android

完成的目标是成为一系列按钮(目前在 table 中),这些按钮将 hide/reveal 行包含每行之间的固定数据。

我不确定我的方法是否可行或最优,我不执着于这种方法。我对 Kotlin/Android 没有什么经验,但这里有一个硬编码示例的示例:

<TableLayout
    android:id="@+id/superTable"
    android:layout_width="match_parent"
    android:layout_height="0sp"
    android:layout_marginTop="0sp"
    android:stretchColumns="1"
    android:visibility="visible"
    app:layout_constraintTop_toBottomOf="@+id/chem2Table">

    <FrameLayout
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/superTableButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16sp"
            android:layout_marginLeft="16sp"
            android:layout_marginTop="0sp"
            android:onClick="superChemical1"
            android:text="@string/button_chem3"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/chem2Table" />
    </FrameLayout>

    <TableRow
        android:id="@+id/superRow1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone">

        <TextView
            android:id="@+id/sr1c1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#b0b0b0"
            android:padding="5sp"
            android:text="@string/chem3c1"
            android:textColor="#000"
            android:textSize="12sp" />

</TableLayout>

和我的hide/show方法:

fun superChemical1(view: View) {
    val chemId = R.id.superRow1
    val chemVisibility = findViewById<TableRow>(chemId)

    if(chemVisibility.visibility == View.VISIBLE) {
        chemVisibility.visibility = View.GONE
    } else {
        chemVisibility.visibility = View.VISIBLE
    }
}

目标是重现相同的功能,整个 table 是从外部源动态生成的。它将使用一个动态的 onClick 方法,该方法可以接收被单击按钮的 ID,然后 hide/show 包含关联数据的下一行。

我不确定如何完成的主要事情是将每个生成的按钮与以下数据行相关联。

最后,我决定使用完全适合我目的的 RecyclerView。 TableLayout 最终变得笨重且难以格式化,所以我放弃了该项目并使用 RecyclerView 重新启动。