更改 Alpha/Opacity 的 Recycleradapter
Change Alpha/Opacity of Recycleradapter
我是第一次使用 RecyclerAdapter。我通过教程实现了它,到目前为止效果很好。我使用它的方式就像一个弹出窗口,所以你点击一个按钮,这个按钮将 RecyclerView 的不透明度更改为 0.8,因此它变得可见。现在我想在单击 RecyclerItem 后使整个 RecyclerView 不可见。因为 RecyclerView 调用了另一个 Class“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])
}
}
这个答案中描述了最好的方法:
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)
}
}
}
我是第一次使用 RecyclerAdapter。我通过教程实现了它,到目前为止效果很好。我使用它的方式就像一个弹出窗口,所以你点击一个按钮,这个按钮将 RecyclerView 的不透明度更改为 0.8,因此它变得可见。现在我想在单击 RecyclerItem 后使整个 RecyclerView 不可见。因为 RecyclerView 调用了另一个 Class“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])
}
}
这个答案中描述了最好的方法:
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)
}
}
}