對于我的Recyclerview中的每21個專案,我想讓該視圖中的圖片變大。應該很簡單。
我在我的ItemAdapter類的onBindViewHolder中添加了這段代碼:
override fun onBindViewHolder( holder: ItemViewHolder, pos: Int) {
val currentItem = getItem(pos)
val largeItemView = pos >= 21 && pos % 21 == 0 !
Log.e("ItemAdapter", "Position: $pos, largeItemView bool: $largeItemView")
if (currentItem != null) {
holder.bind(currentItem, pos, largeItemView)
}
}
largeItemView的布林值被傳遞給我的ItemViewHolder
。class ItemViewHolder(private val binding: ShopProductItemBinding)。
RecyclerView.ViewHolder(binding.root) {
fun bind( item: RoomItem, pos: Int, largeItemView: Boolean) {
var imageBefore = item.product_image_list?.substringBefore(', ')
imageBefore = addHttpsToImageUrl(imageBefore)
if (largeItemView) {
//span>當largeItemView為false時,這將被呼叫?
binding.apply {
imageViewItem.layoutParams.height =800
imageViewItem.scaleType = ImageView.ScaleType.FIT_XY
Glide.with(itemView)
.load(imageBefore)
.transition(DrawableTransitionOptions.withCrossFade())
.進入(imageViewItem)
imageViewItem.setOnClickListener {
logProductInfo(item, pos, imageBefore, largeItemView)
}
}
} else {
binding.apply {
Glide.with(itemView)
.load(imageBefore)
.centerCrop()
.transition(DrawableTransitionOptions.withCrossFade())
.進入(imageViewItem)
imageViewItem.setOnClickListener {
logProductInfo(item, pos, imageBefore, largeItemView)
}
}
}
}
recyclerview中的每21個專案都會增加高度。這很好。然而,回收器視圖中的其他專案隨機地也有一個高度的增加。我無法解釋這一點。我已經設定了日志來顯示我所點擊的專案的位置和布林值。我將點擊一個不應該大的圖片專案,而日志顯示largeItemView的布林值為假。那么,增加圖片大小的代碼怎么可能達到呢?
這里有一些螢屏截圖,是關于圖片大小的。
這個問題讓我很困惑。對這里發生的事情有什么想法嗎?
uj5u.com熱心網友回復:
感謝Pawel,我有了解決方案
"Viewholder被重復使用--你的其他情況必須將高度和scaleType恢復為默認值,以考慮到你所系結的viewholder被系結到之前觸發 "largeItemView "的位置的情況"。我添加了
imageViewItem.layoutParams.height = 600
imageViewItem.scaleType = ImageView.ScaleType.CENTER_CROP
在我的 itemviewholder 中的 else 塊中,它已經解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/313082.html
標籤:
上一篇:如何在中間畫一個透明的矩形?


