我有一个recyclerView
,其中有多个项目(ViewHolders
)。在其中一个(ViewHolderItemTratamentos)中,我获得了以下元素:
当单击第一个“添加按钮”时,通过充气机布局,相同的元素(editText
和button
)将在前一个元素下方创建。就是这样:
直到这里,一切都还好。使用相等的editText
和相等的button
创建另一行,该行具有不同的ID R.id.btn_add_field_din
(来自夸大的布局)。此处的button
具有相同的逻辑。它使相同的布局(同一行)膨胀。但是,这第三个按钮将不起作用,并且具有相同的ID(R.id.btn_add_field_din
)。我也尝试过tag
,但这给了我同样的问题。
问题是我希望有很多行,但是从第三个按钮开始,setClickOnListener
失去了操作。你知道会是什么吗?这是代码:
适配器:
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 = "-"
//remove row
removeField(holder.add_field_button, holder.parent_linear_layout)
btn_add_field_din.setOnClickListener {
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)
btn_add_field_din.text = "-"
//remove row
removeField(btn_add_field_din, holder.parent_linear_layout)
}
}
}
布局已添加(R.layout.used_products_field):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/number_edit_text"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5"
android:focusedByDefault="true"
android:inputType="phone"/>
<Button
android:id="@+id/btn_add_field_din"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/botaoCard"
android:textSize="24dp"
android:text="+"
android:padding="5dp"/>
</LinearLayout>
答案 0 :(得分:0)
使用对内部视图的综合引用来使视图膨胀的方式。我不确定这种方式是否起作用,因为R
是在编译而非运行时创建的。我想您在RecyclerView中使用了多个此类ViewHolder。在这种情况下,将同一ID设置为多个视图,这是不可能的。
我的猜测是btn_add_field_din
没有引用您认为的视图。检查一下。尝试设置背景Color.RED
,看看是否正确。
另外,removeField(btn_add_field_din, holder.parent_linear_layout)
似乎删除了视图,是吗?