我有一些用 RecyclerView 生成的差異塊,根據設計,最后兩個塊應該有另一個文本大小。我以編程方式執行此操作:
when(position){
0 -> {
holder.catCard.setCardBackgroundColor(Color.parseColor("#FF5668"))
}
1 -> {
holder.catCard.setCardBackgroundColor(Color.parseColor("#18C2E9"))
}
3 -> {
holder.catCard.setCardBackgroundColor(Color.parseColor("#18C2E9"))
40F.also { holder.catTitle.textSize = it }
}
}
inner class ViewHolder(itemView:View): RecyclerView.ViewHolder(itemView), View.OnClickListener{
var catImage: ImageView = itemView.findViewById(R.id.catImage)
var catTitle: TextView = itemView.findViewById(R.id.catTitle)
var catCard: CardView = itemView.findViewById(R.id.catCardItem)
var catTitleWrapper: LinearLayout = itemView.findViewById(R.id.catTitleWrapper)
override fun onClick(viewType: View?) {
listener.invoke(adapterPosition)
}
}
但我還必須更改 LinearLayout 的視圖之一:
var catTitleWrapper: LinearLayout = itemView.findViewById(R.id.catTitleWrapper)
內部類的變數。我嘗試實施一些解決方案,但它根本不起作用。如果可能的話,請幫我解決這個問題。
uj5u.com熱心網友回復:
要更改最后一項布局引數,您必須檢查是否在串列中的最后一項中呼叫了 RecyclerView 方法“onBindViewHolder”,為此,請在內部類 ViewHolder 中:
inner class ViewHolder(itemView:View): RecyclerView.ViewHolder(itemView), View.OnClickListener{
var catImage: ImageView = itemView.findViewById(R.id.catImage)
var catTitle: TextView = itemView.findViewById(R.id.catTitle)
var catCard: CardView = itemView.findViewById(R.id.catCardItem)
var catTitleWrapper: LinearLayout = itemView.findViewById(R.id.catTitleWrapper)
if (bindingAdapterPosition 1 == itemCount) {
val catTitleWrapperLayoutParams = catTitleWrapper.layoutparms
catTitleWrapperLayoutParams.width = $YOUR_WIDTH: Int
}
override fun onClick(viewType: View?) {
listener.invoke(adapterPosition)
}
}
基本上,我們檢查 RecyclerView 變數 bindingAdapterPosition 是否等于 itemCount,如果是,則意味著我們在最后一個專案上,然后我們繼續將布局引數應用于提到的包裝器。我們將 1 加到 bindingAdapterPosition 因為它將回傳專案的索引,這意味著第一個將是 0。我是手寫的,如果它有效,請告訴我:D
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/477365.html
標籤:安卓工作室 科特林 android-recyclerview