Kotlin / Android-获取onBindViewHolder项中生成的按钮的ID

时间:2018-12-31 16:28:58

标签: android kotlin android-recyclerview adapter android-viewholder

我有一个a,其中有多个项目(recyclerView)。在其中的一个( ViewHolderItemTratamentos )中,我获得了以下元素:

enter image description here

单击第一个“添加ViewHolders”时,通过button布局,在前一个元素下方创建相同的元素(inflatoreditText)。就是这样:

enter image description here 我的button中的代码(获得设置点击的逻辑)创建了新行:

adapter

因此,问题是我无法从holder.add_field_button.setOnClickListener { holder.parent_linear_layout.apply { val inflater = LayoutInflater.from(context) val rowView = inflater.inflate(R.layout.used_products_field, this, false) holder.parent_linear_layout.addView(rowView, holder.parent_linear_layout.childCount!! - 0) holder.add_field_button.text = "-" } } 的{​​{1}}中获取id来生成新行。我应该给这个布局充气吗(这有意义吗?)?我应该给每个button(静态的和生成的那个)都赋予相同的layout.used_products_field吗?

R.layout.used_products_field的内容:

id

2 个答案:

答案 0 :(得分:0)

您应该在将按钮添加到父级ViewGroup后获取该按钮,如果您是行单击侦听器块,则该按钮。

holder.add_field_button.setOnClickListener {
    holder.parent_linear_layout.apply {
        val inflater = LayoutInflater.from(context)
        val rowView = inflater.inflate(R.layout.used_products_field, this, false)
        addView(rowView, childCount!! - 0) // addView and childCount are available in the scope
        holder.add_field_button.text = "-"

        val button = findViewById<Button>(R.id.add_field_button) // findViewById is available in the scope
    }
}

答案 1 :(得分:0)

您可以在展开的布局(used_products_field)中获取视图

val inflater = LayoutInflater.from(context)
val rowView = inflater.inflate(R.layout.used_products_field, this, false)
val button = rowView.findViewById<Button>(R.id.add_field_button)
val edittext = rowView.findViewById<EditText>(R.id.number_edit_text)