适配器回调附加到错误的位置

时间:2019-05-28 20:44:00

标签: android callback android-adapter

我在Firebase通话中检索了五张卡,并将其添加到适配器中。我的应用程序是Tinder风格的应用程序,用户在其中滑动以移动到另一张卡,但在父片段(而不是适配器)中有一个按钮,他们可以在其中从该项目适配器检索信息并将其传递给用户可以在其中进行的另一活动。编辑它。

我正在通过添加到适配器的回调接口获取卡信息,但没有将当前显示在屏幕上的项目循环显示到列表的中间,并向我提供了第三个元素,但我没有知道为什么会这样。

inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) 
{
    fun bind(position: Int) {

        val card = cardList[position] 

        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?) {}
override fun onCardCanceled() {}
override fun onCardAppeared(view: View?, position: Int) {}
override fun onCardRewound() {}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    setString = arguments?.getString("setString")

    val collectionType = object : TypeToken<List<Card>>() {}.type
    cardList = Gson().fromJson(setString, collectionType) as List<Card>

    for (i in cardList!!) {
        adapter.addItem(i, this)
    }

    setUpCardStackView()
 }
}

按钮的监听器

myButton -> activity?.toast(stringTest ?: "") // Always  giving me the third card instead of first one which is what is showing on the screen

PS:总体而言,每次刷卡时,我都需要检索从适配器获得的信息。如果将我添加到点击侦听器中,则可以在滑动之前执行点击操作,这不是正常的流程。但是,如果将它添加到侦听器之外,则会出现此线程下发布的问题,所以现在有些困惑。

谢谢。

0 个答案:

没有答案