У меня есть коллекция карт (CardStackAdapter), и я хотел бы, чтобы карта перевернулась, когда пользователь нажимает кнопку во фрагменте хоста, который не является частью самого адаптера.Я пытался добиться этого, используя обратные вызовы, но в данный момент мой обратный вызов подключается только к нужному элементу, если я вручную переворачиваю их, нажимая на карту, и только после этого я могу управлять анимацией переворота с помощью кнопки в действии.,Так что моя кнопка может перевернуть что-то только после того, как эта вещь уже была перевернута, что делает ее довольно бесполезной и избыточной.
class CardStackAdapter(private val activity: Activity) :
RecyclerView.Adapter<CardStackAdapter.ViewHolder>() {
private val cardList = ArrayList<Card>()
private var callback: AdapterCallback? = null
fun addItem(item: Card, adapterCallback: AdapterCallback) {
cardList.add(item)
notifyDataSetChanged()
callback = adapterCallback
}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bind(position: Int) {
with(itemView) {
callback?.onClickCallback(card, itemView, position) //When I try this connects it connects to the item who is not on the screen yet
cvParent.setOnClickListener { v ->
flipAnimation(v, card)
callback?.onClickCallback(card, itemView, position)
}
}
}
}
interface AdapterCallback {
fun onClickCallback(itemModel: Card, itemView: View, position: Int)
}
}
И вот мой фрагмент:
class CardDetailFragment : Fragment(), CardStackListener, CardStackAdapter.AdapterCallback {
override fun onClickCallback(itemModel: Card, itemView: View, position: Int) {
stringTest = itemModel.cardQuestion
this.itemModel = itemModel
this.itemView = itemView
this.position = position
}
override fun onCardDisappeared(view: View?, position: Int) {}
override fun onCardDragging(direction: Direction?, ratio: Float) {}
override fun onCardSwiped(direction: Direction?) {
// itemView?.tvCardTitle?.performClick()
// adapter.flipAnimation(this.itemView!!, this.itemModel!!)
}
override fun onCardCanceled() {}
override fun onCardAppeared(view: View?, position: Int) {
onClickCallback(itemModel!!, itemView!!, position)
}
override fun onCardRewound() {}
целомкод
Большое спасибо.