从列表(Cscore)中,我正在检索一个称为“ currentscore”的值;我正在使用此值设置要完全可见的图像与Alpha设置为0.5f的图像之间的界线
例如:CurrentScore = 4
项目0:alpha 1
...
项目4:alpha 1
项目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
}
我最终将所有ImageViews都设置为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
}
}