[英]Xamarin Android:How to change the color of selected rows in a recyclerview
[英]In Android RecyclerView How to change the color of Alternate rows
我是 android 新手,最近我學習了recyclerview
,我想更改行的顏色。
示例:我有 10 行,我想更改顏色,例如 5 行藍色和 5 行紅色。備用行顏色應該是這樣的。
我必須從哪里通過適配器或 MainActivity 更改它。 請幫幫我
您可以通過在 Adapter 類上添加以下代碼來更改備用行的顏色。 您還可以使用此代碼更改行的圖像。
將此代碼放在適配器類的OnBindViewHolder
中。
if(position %2 == 1)
{
holder.itemView.setBackgroundColor(Color.parseColor("#FFFFFF"));
// holder.imageView.setBackgroundColor(Color.parseColor("#FFFFFF"));
}
else
{
holder.itemView.setBackgroundColor(Color.parseColor("#FFFAF8FD"));
// holder.imageView.setBackgroundColor(Color.parseColor("#FFFAF8FD"));
}
在適配器的 onBindViewHolder 中,只需獲取位置並檢查它是偶數還是奇數。 如果是偶數,請將布局的背景顏色設置為紅色,否則為藍色
@Override
public void onBindViewHolder(final ViewHolder viewHolder, int position) {
if(position%2 == 0){
viewHolder.containerLayout.setBackgroundColor(R.color.RED);
} else {
viewHolder.containerLayout.setBackgroundColor(R.color.BLUE);
}}
在 Kotlin 中使用 CardView
internal fun bind(d: Detalle, position: Int, listener: OnItemClickListener) {
if (position % 2 == 1) {
cardViewPrincipal.setCardBackgroundColor(ContextCompat.getColor(itemView.context, R.color.blue_logo))
} else {
cardViewPrincipal.setCardBackgroundColor(ContextCompat.getColor(itemView.context, R.color.colorWhite))
}
倍數顏色
when {
p % 4 == 0 -> cardViewPrincipal.setCardBackgroundColor(ContextCompat.getColor(itemView.context, R.color.yellow))
p % 4 == 1 -> cardViewPrincipal.setCardBackgroundColor(ContextCompat.getColor(itemView.context, R.color.green))
p % 4 == 2 -> cardViewPrincipal.setCardBackgroundColor(ContextCompat.getColor(itemView.context, R.color.blue))
p % 4 == 3 -> cardViewPrincipal.setCardBackgroundColor(ContextCompat.getColor(itemView.context, R.color.red))
}
我相信所有這些解決方案的一個問題是在某些情況下不會調用onBindViewHolder
。 如果您使用諸如notifyItemInserted(int position)
類的通知方法,您可能會將行以相同的顏色堆疊在一起 - 不好。 您需要對每個其他項目調用notifyItemChanged
以重新呈現與新位置對應的背景顏色。
使用 re-render all 方法notifyDataSetChanged()
將解決這個問題(但比只更新特定行效率低),並且如果您沒有在用戶在屏幕上時動態更改RecyclerAdapter
的內容,您將不會有這個問題。
使用 Kotlin
if (position % 2 == 1) {
holder?.itemView?.setBackgroundColor(context.resources.getColor(R.color.text_gray))
} else {
holder?.itemView?.setBackgroundColor(context.resources.getColor(R.color.white))
}
這是一個解決方案:
LinearLayout ll_search =(LinearLayout)convertView.findViewById(R.id.ll_search);
if(position %2 == 1) {
ll_search.setBackgroundColor(Color.parseColor("#FFFFFF"));
} else {
ll_search.setBackgroundColor(Color.parseColor("#d3d3d3"));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.