回收者查看项目翻转 [英] Recycler View Item flip

查看:50
本文介绍了回收者查看项目翻转的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

实际上,我在使用回收站视图并在行中添加布局,并且在cardviews上使用翻转动画(单击时).问题是当我在回收站中添加多个项目时,翻转动画仅适用于第一个项目.我用吐司来确保单击功能是否可以与其他项目一起使用,事实证明它可以正常工作,但翻转动画不能与其他任何项目一起使用.在这里有人可以帮忙吗

Actually I am using recycler view and adding a layout in the rows and I am using flip animation on cardviews(when clicked on it). The problem is when I add multiple items in the recycler the flip animation works only with the first item. I used toast to make sure that click function is working with other items or not, turns out it's working but flip animation is not working with any other items.Can any one help me out here

这是我的代码

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可以按原样对其进行回收.您可以将卡片翻转代码放在Clicklistener的itemview内:

You should place your card flipping code inside your recyclerview adapter so that recyclerview can recycle it as it should be. You can place your card flipping code inside itemview onClicklistener:

 itemView.setOnClickListener {

     // Place your flipping code here

     action.onCardClick(item, adapterPosition)
 }

从onCardClick回调中删除翻转代码.让我知道它是否可以正常工作.

Remove flipping code from onCardClick callback. Let me know if it works fine.

这篇关于回收者查看项目翻转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆