android - 回收商查看物品翻转
问题描述
实际上我正在使用回收器视图并在行中添加布局,并且我在卡片视图上使用翻转动画(单击它时)。问题是当我在回收器中添加多个项目时,翻转动画仅适用于第一个项目。我用 toast 来确保单击功能是否适用于其他项目,结果它可以正常工作但翻转动画不适用于任何其他项目。任何人都可以在这里帮助我
这是我的代码
override fun onCardClick(item: PacketModel, position: Int) {
val scale = this.resources.displayMetrics.density
frontCard.cameraDistance= 8000 * scale
backCard.cameraDistance = 8000 * scale
front_anim = AnimatorInflater.loadAnimator(context, R.animator.front_animator) as AnimatorSet
back_anim = AnimatorInflater.loadAnimator(context, R.animator.back_animator) as AnimatorSet
if (isFront){
front_anim.setTarget(frontCard)
back_anim.setTarget(backCard)
front_anim.start()
back_anim.start()
isFront = false
}else
{
front_anim.setTarget(backCard)
back_anim.setTarget(frontCard)
back_anim.start()
front_anim.start()
isFront = true
}
Toast.makeText(context, item.Name , Toast.LENGTH_SHORT).show()
}
}
这是适配器类
class PacketAdapter (val packetList: ArrayList<PacketModel> , var clickListener2: onPacketItemClickListener): RecyclerView.Adapter<PacketAdapter.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val a = LayoutInflater.from(parent?.context).inflate(R.layout.packet, parent, false)
return ViewHolder(a)
}
override fun getItemCount(): Int {
return packetList.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val packet : PacketModel = packetList[position]
holder.intialize(packet, clickListener2)
}
class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView)
{
val packetTime = itemView.findViewById<TextView>(R.id.packetTime)
val timeMessage = itemView.findViewById<TextView>(R.id.timeMessage)
fun intialize(item: PacketModel, action: onPacketItemClickListener){
packetTime.text = item.Name
timeMessage.text = item.Age
itemView.setOnClickListener {
action.onCardClick(item, adapterPosition)
}
}
}
interface onPacketItemClickListener{
fun onCardClick (item: PacketModel, position: Int)
}
}
解决方案
您应该将卡片翻转代码放在您的 recyclerview 适配器中,以便 recyclerview 可以按应有的方式回收它。您可以将卡片翻转代码放在 itemview onClicklistener 中:
itemView.setOnClickListener {
// Place your flipping code here
action.onCardClick(item, adapterPosition)
}
从 onCardClick 回调中删除翻转代码。让我知道它是否工作正常。
推荐阅读
- python - 如何使用 pywinauto 选择并单击 iexplorer 工具栏上的按钮
- python - 重新格式化数 TB 数据的最快方法
- visual-studio-2015 - 带有 BizTalk Server 2016 的 Visual Studio 2015 无法加载 Microsoft.BizTalk.CrossReferencingFunctoids.dll
- bash - 仅为一个管道更改 Jenkins shell
- opencv - 在 png 文件中找到汇编代码是否正常?
- excel - 运行时错误“-2147221080 (800401a8)”对象“_Workbook”的方法“工作表”失败
- javascript - android 当我转到 API>19 时,我的 Java 接口给了我“TypeError: Android.mthod is not a function
- c++ - 从 Visual Studio 2017 运行 MPI 应用程序,每个进程在不同的 cmd 窗口中
- javascript - React Navigation 参数不会重置
- python - 在自定义测试库中捕获失败的屏幕截图