android - 如何实现改变 viewHolder 内容的滑动效果
问题描述
嗨,我正在使用 android studio,我目前正在使用 recyclerview 问题是我想在滑动时在行后面显示一个隐藏的 ImageView,但因为我不知道如何。
我提出了使用两个线性布局的想法,因此其中一个将存储 recyclerview 与图像,另一个将 recyclerview 与滑动行一起存储。
这可能吗?这会减慢应用程序的速度吗?这是浪费内存吗?
先感谢您
解决方案
我的工作假设您在 viewHolders 中有一些自定义视图,并且您使用 onBindViewHolder 为每个位置填充该视图。也就是说,我在假设您对 ViewHolder 构造具有以下内容的假设下工作:
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
var myCustomView= view as MyCustomView
}
override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder {
val myCustomView=MyCustomView(viewGroup.context)
myCustomView.layoutParams= ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT)
return ViewHolder(myCustomView)
}
override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
viewHolder.myCustomView.myTextView.text="this is text"
}
如果我必须解决这个问题,我会将 xml 转到该自定义视图,并使用 FrameLayout 或 LinearLayout 在最外部的级别进行包装。所以现在你的 onBindViewHolder 正在做几乎相同的工作,除了它填充所有的内容,比如 viewHolder.myCustomView.interior.myTextView.text="this is text" 而不是 viewHolder.myCustomView.myTextView.text="this is text ”。
然后我会扩展 ItemTouchHelper.Callback(),它给你一个滑动监听器。在该滑动侦听器内部,我将删除 myCustomView 的内部并将其替换为 imageView。然后我会调用 notifyDataSetChanged() 并希望看到与以前相同的 recyclerview,只是将滑动视图替换为图片。
编辑:
哦,你知道一个更好的主意是忘记外部框架,只用一个不可见的高海拔 imageView 覆盖整个原始 MyCustomView。然后在 ItemTouchHelper.Callback() 内部的 onSwiped() 内部,您可以只提供图像资源并切换可见性。那会干净得多。
推荐阅读
- oracle - 如何以表格形式将单个值复制到所有字段?
- qliksense - 按 id 获取 Qlik 对象时未找到对象
- java - 在 Spring Data/hibernate 中获取实体的异常
- ld - 为什么递归 ld rpath 的应用程序不起作用?
- spring-boot - 嵌入 Vert.x 的 Spring Boot
- c - 在循环中使用 scanf() 扫描 CSV 文件在第一行和第二行开始之后停止
- python - 使用 Wand python 将 PDF 转换为图像
- opengl - 如何在带有 GPU 的 Google Compute Engine 上运行 Gazebo?
- asp.net-mvc - 如何在两个 React 组件之间切换到一个文件中?
- reporting-services - 每页的标题 SSRS