Отразить CardStackAdapter от нажатия кнопки на фрагменте хоста - PullRequest
0 голосов
/ 04 июня 2019

У меня есть коллекция карт (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() {}

целомкод

Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...