Recyclerview Android Kotlin滚动问题内的EditText和TextView

时间:2018-08-29 06:08:58

标签: android android-recyclerview kotlin recyclerview-layout

这是kotlin代码,我有一个包含ArrayList个元素的订单购物车,而我想在这里尝试的是默认情况下{{1}中将数量设置为1我有一些按钮可以增加和减少它。因此,每当我尝试使用这些按钮增加或减少值时,必须更改每一行EditText的总金额。但是,现在一切正常,就像我每次递增或递减值TextView的总金额连续更改,但是当我向下或向上滚动时,TextView中的值消失,并重新设置为默认值一样值。

TextView

1 个答案:

答案 0 :(得分:0)

您需要在KartListAdapter中包含数量数组以保存数量。这些值消失了,这是错误的显示,因为视图在RecyclerView中被回收了。因此,您需要将每行的状态保存在单独的ArrayList中,然后从那里显示数量。

因此,我想建议像ArrayList那样在您的KartListAdapter中有一个单独的var quantityList: List<Int>

然后,当数量增加或减少时,将值保留在quantityList中。使用零初始化此ArrayList,并且其大小等于传递给适配器的arrayList

现在在bindView函数中,像这样在数量文本字段中设置文本。

holder.itemsqty.text = quantityList[position];

内部人员onBindViewHolder在更新数量时,只需增大和减小quantityList中的值,然后调用notifyDataSetChanged以进行{{1}中所需的更改}。

RecyclerView

该代码未经测试,由于语法错误,可能无法正常工作。但是,我认为您可以将增加或减少的数量存储在一个单独的列表中,然后在holder.btnIncrease.setOnClickListener() { quantityList[position] = quantityList[position] + 1; notifyDataSetChanged(); } holder.btnDecrease.setOnClickListener() { if(quantityList[position] > 0) { quantityList[position] = quantityList[position] - 1; notifyDataSetChanged(); } } 中填充视图。

希望有帮助!