Адаптер обратного вызова присоединяется к неправильному положению - PullRequest
0 голосов
/ 28 мая 2019

Я получил пять карт по вызову 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:В целом, мне нужно получать информацию, полученную от адаптера, каждый раз, когда карта проходит.Если я добавлю в прослушиватель кликов, это сработает, если я выполню щелчок до перехода, что не является нормальным потоком.Однако, если я добавлю его за пределами слушателя, я получу сообщение о проблеме, опубликованное в этой теме, поэтому теперь немного растерялся.

Спасибо.

...