RecyclerView-如何仅在拖放时获得位置?

时间:2019-01-25 08:15:43

标签: android kotlin android-recyclerview rx-java2

RecyclerView的主要用途是更改项目的顺序。而且,更改顺序后,我需要获取有关拖动开始位置和拖放位置(完成位置)的数据。

我已经实现了ItemTouchHelper.Callback()并用界面覆盖了它,效果很好,但是唯一的问题是如何仅获得商品的第一和最后位置。

我没有找到任何使用ItemTouchHelper的解决方案,尝试将onSelectedChangedclearView组合使用,但这是行不通的。另外,我正在使用Subjects中的RxJava2来推送值,但没有使用任何类型的过滤器运算符找到解决方案。

override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
    adapter.onItemMoved(viewHolder.adapterPosition, target.adapterPosition)
    return true
}

private fun swapItems(positionFrom: Int, positionTo: Int) {
    Collections.swap(myList, positionFrom, positionTo)

    myList.forEachIndexed { index, myObject -> myListUpdated.add(myObject.copy(index = index)) }
    myListSubject.onNext(myListUpdated.toList())

    notifyItemMoved(positionFrom, positionTo)
}

此刻,我从onMove得到了所有交换的头寸(所以从1到2,从2到3,从3到4)。我想实现1到4,而无需中间步骤。

0 个答案:

没有答案