我正在从一个 List(Cscore) 中检索一个名为“currentscore”的特定值;我使用这个值来设置将完全可见的图像与 alpha 设置为 0.5f 的图像之间的界限
例如:
// CurrentScore = 4
Item 0: alpha 1
....
Item 4: alpha 1
Item 5: alpha 0.5f
...
我正在使用带有适配器的 RecyclerView 执行此操作:
class ImageAdapter(var mList: MutableList<out Cscore>, var pos: Int) : RecyclerView.Adapter<ImageAdapter.ItemViewHolder> () {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
var view = LayoutInflater.from(parent?.context).inflate(R.layout.img_layout, parent, false)
return ItemViewHolder(view)
}
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
var data = mList[pos]
for (i in 0..data.maxscore) {
Picasso.get().load(data.imgurl).into(holder?.currentImage)
if(i>= data.currentscore) {
holder?.currentImage.alpha = 0.5f
}
}
}
override fun getItemCount(): Int {
return mList.size
}
class ItemViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView!!) {
var currentImage: ImageView = itemView?.findViewById(R.id.ImageView)!!
}
}
使用这种布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView android:id="@+id/ImageView"
android:layout_width="20dp"
android:layout_height="20dp" />
</LinearLayout>
这里的问题在于这行代码之间:
if(i>= data.currentscore) {
holder?.currentImage.alpha = 0.5f
}
我最终将我所有的 ImageView 设置为 alpha = 0.5f,而不仅仅是我给定限制 (currentscore) 之后的项目。
为什么会这样?
最佳答案
我不确定这是否是您想要的,但您可以试试下面的代码吗?
override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
var data = mList[position]
var currentScore = mList[pos].currentscore
Picasso.get().load(data.imgurl).into(holder?.currentImage)
if(position < currentScore) {
holder?.currentImage.alpha = 1
} else {
holder?.currentImage.alpha = 0.5f
}
}
关于android - 回收站 View : sets Alpha to all my ImageViews instead of specific,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58225615/