0

我想编写这个 todo() 部分以使用 Airbnb 的 Epoxy Library 执行拖放,我有这个方法 onModelMoved() 我无法思考要编码什么或方法需要帮助!

EpoxyTouchHelper.initDragging(controller)
        .withRecyclerView(binding.epoxyRecyclerView)
        .forVerticalList()
        .withTarget(HomeEpoxyController.ItemEntityEpoxyModel::class.java)
        .andCallbacks(object :
            EpoxyTouchHelper.DragCallbacks<HomeEpoxyController.ItemEntityEpoxyModel>() {
            override fun onModelMoved(
                fromPosition: Int,
                toPosition: Int,
                modelBeingMoved: HomeEpoxyController.ItemEntityEpoxyModel?,
                itemView: View?
            ) {
                // todo()
            }
        })

下面是我在 HomeEpoxyController 中的数据类,如果它可以帮助你的话

 data class ItemEntityEpoxyModel(
    val itemEntity: ItemEntity,
    val itemEntityInterface: ItemEntityInterface
) : ViewBindingKotlinModel<ModelItemEntityBinding>(R.layout.model_item_entity) {
    override fun ModelItemEntityBinding.bind() {
        titleTextView.text = itemEntity.title

        if(itemEntity.description == null){
            descriptionTextView.isGone = true
        }else{
            descriptionTextView.isVisible = true
            descriptionTextView.text = itemEntity.description
        }

        deleteImageView.setOnClickListener {
            itemEntityInterface.onDeleteItemEntity(itemEntity)
        }
        priorityTextView.setOnClickListener {
            itemEntityInterface.onBumpPriority(itemEntity)
        }

        val colorRes = when(itemEntity.priority){
            1 -> android.R.color.holo_green_dark
            2 -> android.R.color.holo_orange_dark
            3 -> android.R.color.holo_red_dark
            else -> R.color.purple_500
        }

        priorityTextView.setBackgroundColor(ContextCompat.getColor(root.context,colorRes))
    }

}
4

1 回答 1

0

您需要更新待办事项所在的列表。例如,Collections.swap(yourList, fromPosition, toPosition)

于 2022-01-31T21:39:49.673 回答