android - 如何将 ItemTouchHelper.SimpleCallback 与 ViewPager2 一起使用?
问题描述
我已经使用创建了一个图像滑块ViewPager2
,我需要一个功能,当我向上滑动图像时应该将其删除。我已经和RecyclerView
. 所以我记得我可以使用ItemTouchHelper.SimpleCallback
滑动来删除功能。但是attachToRecyclerView
方法需要一个RecyclerView
不是ViewPager2
即使viewpager2
使用 RecyclerView 适配器。
科特林:
ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.UP) {
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
}
}).attachToRecyclerView(binding.viewPager)
解决方案
这是从 ViewPager2 获取 RecyclerView 的另一种方法。我假设您有一个名为 PictureItemAdapter 的适配器:
class PictureItemAdapter(private val recyclerViewAttached: (RecyclerView) -> Unit) : RecyclerView.Adapter<PictureItemViewHolder>() {
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
super.onAttachedToRecyclerView(recyclerView)
recyclerViewAttached(recyclerView)
}
...
}
您将从recyclerViewAttached
关闭处收到 Recycler 视图
val pictureItemAdapter = PictureItemAdapter{ recyclerView ->
ItemTouchHelper(object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.UP) {
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
}
}).attachToRecyclerView(recyclerView)
}
binding.viewPager.adapter = pictureItemAdapter
注意:RecyclerViewAdapter和FragmentStateAdapter都有一个 onAttachedToRecyclerView 方法。
推荐阅读
- java - 使用 GSON 解析 JSON 会忽略字段对象
- c# - 问题更新到 .Net 6 - 加密字符串
- itfoxtec-identity-saml2 - 调用 Saml2PostBinding.Unbind() 时签名无效
- c# - “建议使用 nuget 包中的类型” - 如何建议我的 NuGet 包?
- reactjs - ES7 React/Redux/GraphQL/React-Native 片段不工作
- python - Tensorflow 条件 x==y 错误:A InvalidArgumentError
- javascript - 日期在 Safari 浏览器 Angular 7 中不可见
- python - 将参数插入映射函数python
- java - 如何使用 spring 创建 NTLM 身份验证
- google-bigquery - 将 Xilnex 的实时数据连接到 Google Big Query