【问题标题】:Change Alpha/Opacity of Recycleradapter更改 Recycleradapter 的 Alpha/Opacity
【发布时间】:2020-07-03 13:34:47
【问题描述】:

我是第一次使用 RecyclerAdapter。我通过教程实现了它,到目前为止它运行良好。我使用它的方式就像一个弹出窗口,所以你点击一个按钮,这个按钮将 RecyclerView 的不透明度更改为 0.8,因此它变得可见。现在我想在单击 RecyclerItem 后使整个 RecyclerView 不可见。因为 RecyclerView 调用另一个类“RecyclerAdapter”我想知道如何解决 RecyclerView 那里。

class RecyclerAdapter(private var titles: List<String>, private var details: List<String>, private var images:List<Int>) : RecyclerView.Adapter<RecyclerAdapter.ViewHolder>(){
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){

    val itemTitle: TextView = itemView.findViewById(R.id.ks_title)
    val itemDetail: TextView = itemView.findViewById(R.id.ks_descr)
    val itemImage: ImageView = itemView.findViewById(R.id.ks_image)

    init {
        itemView.setOnClickListener { v: View ->
            val position: Int = adapterPosition
            Toast.makeText(
                itemView.context,
                "Kartensatz # ${position + 1} gewählt",
                Toast.LENGTH_SHORT
            ).show()
            SpielEinstellungen.kartensatz = adapterPosition + 1
            // -> NEED TO CHANGE ALPHA OF RECYCLERVIEW TO 0 HERE )
        }
    }
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
   val v = LayoutInflater.from(parent.context).inflate(R.layout.kartensaetze,parent,false)
    return ViewHolder(v)
}

override fun getItemCount(): Int {
    return titles.size
}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.itemTitle.text = titles[position]
    holder.itemDetail.text = details[position]
    holder.itemImage.setImageResource(images[position])
}

}

【问题讨论】:

    标签: android kotlin android-recyclerview opacity alpha


    【解决方案1】:

    这个答案描述了最好的方法:Is there a better way of getting a reference to the parent RecyclerView from the adapter?

    lateinit var recycler: RecyclerView
    
    override fun onAttachedToRecyclerView(recyclerView: RecyclerView) {
        super.onAttachedToRecyclerView(recyclerView)
        recycler = recyclerView
    }
    

    你在 RecyclerAdapter 中引入一个局部变量,它在 onAttachedToRecyclerView 被调用时被初始化,然后你就可以使用它了。

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
    
        val itemTitle: TextView = itemView.findViewById(R.id.ks_title)
        val itemDetail: TextView = itemView.findViewById(R.id.ks_descr)
        val itemImage: ImageView = itemView.findViewById(R.id.ks_image)
    
        init {
            itemView.setOnClickListener {
                Toast.makeText(itemView.context,
                    "Kartensatz # ${adapterPosition + 1} gewählt",
                    Toast.LENGTH_SHORT).show()
    
                SpielEinstellungen.kartensatz = adapterPosition + 1
                recycler.alpha(0f)
            }
        }
    }
    

    【讨论】:

    • 非常感谢!看起来这就是我要找的东西! !
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多