首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回收者视图项目翻转

问回收者视图项目翻转
EN

Stack Overflow用户
提问于 2020-04-04 01:32:09
回答 1查看 642关注 0票数 0

实际上,我正在使用回收器视图,并在行中添加布局,我在卡片视图上使用翻转动画(当单击它时)。问题是,当我在回收器中添加多个项目时,翻转动画仅适用于第一个项目。我用toast来确定点击函数是否能与其他项目一起工作,结果证明它能工作,但翻转动画不能与任何其他items.Can一起工作,这里有人能帮我吗

这是我的代码

代码语言:javascript
复制
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()
    }

}

这是适配器类

代码语言:javascript
复制
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)

    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 10:50:33

你应该把翻牌代码放在回收器视图适配器中,这样回收器视图就可以像它应该的那样回收它。您可以将翻牌代码放在itemview onClicklistener中:

代码语言:javascript
复制
 itemView.setOnClickListener {

     // Place your flipping code here

     action.onCardClick(item, adapterPosition)
 }

从onCardClick回调中移除翻转代码。如果它工作正常,请让我知道。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61017338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档