Мне достался следующий состав:
Этот макет является предметом моего RecyclerView.Adapter
. Кнопка X (holder.delete_button
) при нажатии удаляет себя и EditText
; в основном это удаляет строку.
Кнопка ДОБАВИТЬ ПОЛЕ добавляет новые строки (по инфлятору):
Вот код для добавления новой строки:
holder.add_field_button.setOnClickListener {
holder.parent_layout.apply {
val inflater = LayoutInflater.from(context)
val rowView = inflater.inflate(R.layout.generated_layout, this, false)
holder.parent_layout.addView(rowView, holder.parent_layout.childCount!! - 0)
}
}
Моя проблема в том, что Я просто могу удалить первую строку , потому что это единственный button
, который я могу инициализировать в ViewHolder
с помощью id
из delete_button
. Но для следующих кнопок X я не могу делать никаких действий , потому что кнопка находится во внешнем макете, надутом, называемом generated_layout
! Я пытался генерировать идентификаторы, но потом я не знаю, как поместить их в массив. Вот код для удаления строки:
holder.delete_button.setOnClickListener{
holder.parent_layout.removeView(holder.delete_button.parent as View)
}
Вот также код сгенерированного_слоя:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal" >
<EditText
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:inputType="phone"/>
<Button
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_weight="0"
android:background="@android:drawable/ic_delete"/>
</LinearLayout>