Open taontech opened 1 year ago
不同的sdk版本需要override的方法参数有变化,31版本集成方法如下:
val callback: ItemTouchHelper.SimpleCallback = object : ItemTouchHelper.SimpleCallback(0, (ItemTouchHelper.LEFT) ) { override fun onMove( recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder ): Boolean { return false } override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { // Take action for the swiped item try { val position = viewHolder.adapterPosition val data:ProjectModel = viewModel.projectList[viewHolder.adapterPosition] AlertDialog.Builder(requireContext()).apply { setTitle("警告") setMessage("删除后无法恢复,确定要删除此项目吗?") setCancelable(true) setPositiveButton("删除"){ dialog, which -> viewModel deleteProject data.projectId!! } setNegativeButton("取消"){ dialog, which-> adapter.notifyItemChanged(viewHolder.adapterPosition) } show() } } catch (e: Exception) { Log.e("MainActivity", e.message.toString()) } } // You must use @RecyclerViewSwipeDecorator inside the onChildDraw method override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean ) { RecyclerViewSwipeDecorator.Builder( c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive ) .addSwipeLeftBackgroundColor( Color.WHITE ) .addSwipeLeftActionIcon(R.drawable.ic_close) .addSwipeRightBackgroundColor( Color.GRAY ) .addSwipeRightActionIcon(R.drawable.warning) .addSwipeRightLabel("RIGHT") .setSwipeRightLabelColor(Color.BLUE) .addSwipeLeftLabel("删除项目") .setSwipeLeftLabelColor(Color.RED) // .addCornerRadius(TypedValue.COMPLEX_UNIT_DIP, 16) // .addPadding(TypedValue.COMPLEX_UNIT_DIP, 8, 16, 8) .create() .decorate() super.onChildDraw( c!!, recyclerView!!, viewHolder!!, dX, dY, actionState, isCurrentlyActive ) } } val itemTouchHelper = ItemTouchHelper(callback) itemTouchHelper.attachToRecyclerView(recyclerView)
不同的sdk版本需要override的方法参数有变化,31版本集成方法如下: