2014-10-01 47 views
1

我需要改變每一行的背景色上使用自定義列表視圖列表視圖我的.I'm。android-改變自定義列表視圖背景的某些行

每一行都有一個RelativeLayout的,我改變這樣的:

public View getView(int position, View convertView, ViewGroup parent) { 
........ 
if (convertView == null) { 
       convertView = inflater.inflate(R.layout.item, null); 
       holder = new ViewHolder(); 
       holder.rl=(RelativeLayout)convertView.findViewById(R.id.rl); 
       holder.rl.setBackgroundResource(R.drawable.roundcorner); 
       convertView.setTag(holder); 
      } else { 
       holder = (ViewHolder) convertView.getTag(); 
      } 
     holder.rl.setBackgroundResource(R.drawable.round_corner_vip); 
}} 

我不改變每行的bakcground,我只是改變了一些人。

我想知道它是一個壞主意?我的意思是,它是否消耗大量內存,並且對性能不利?

感謝

+2

嘗試在位置改變背景鹼或設置在每個列表項目數據特定的背景標記,並設置在此基礎上的標誌值。 – 2014-10-01 05:25:54

+0

@HareshChhelana感謝您的回覆,你能看到下一個答案嗎?你是這個意思嗎 ?如果是這樣,我已經添加了問題的評論, – mohsen 2014-10-01 14:20:13

回答

3

是的,你可以根據PositiongetView()改變ListView行的背景顏色。 將此代碼放入您的getView()方法中。我已經使用位置% 4的重複顏色後4th item

switch (position % 4) { 
     case 0: 
      convertView.setBackgroundColor(Color.BLACK); 
      break; 
     case 1: 
      convertView.setBackgroundColor(Color.RED); 
      break; 
     case 2: 
      convertView.setBackgroundColor(Color.GREEN); 
      break; 
     case 3: 
      convertView.setBackgroundColor(Color.GRAY); 
      break; 
     default: 
      break; 
     } 

如果您有ListView中修復項目,然後你也可以根據

位置
 if(position == 0) { 
      convertView.setBackgroundColor(Color.BLACK); 
     } else if(position == 1) { 
      convertView.setBackgroundColor(Color.RED); 
     } else if(position == 2) { 
      convertView.setBackgroundColor(Color.GRAY); 
     } else if(position == 3) { 
      convertView.setBackgroundColor(Color.GREEN); 
     } 

希望它可以幫助改變顏色!

你有兩種類型的可繪製 roundcorner and round_corner_vip所以我認爲你必須設置一個VIP flag作爲@Haresh Chhelana在評論中說,然後在您的適配器類 getView()你應該做這樣的事情的
+0

感謝您的答覆,它改變ListView的行的背景顏色,就像我說的,我有一個自定義佈局。在一行中,我有一個白色背景色的linearLayout,所以當我做了你所說的,它改變了行的背景色,但我需要改變linearLayout的背景色。我該怎麼做? – mohsen 2014-10-01 14:18:44

+0

@mohsen見下文 – XtreemDeveloper 2014-10-02 04:13:01

+0

我答案,我想這樣的作品...的LinearLayout佈局=(LinearLayout中)convertView.findViewById(R.id.your_linear_layout);然後將顏色設置爲線性佈局convertView.setBackgroundColor(Color.GRAY); – Rajesh 2014-10-02 04:43:01

3

你繪製名狀態:

if(vip_flag) 
{ 
    holder.rl.setBackgroundResource(R.drawable.round_corner_vip); 
} 
else 
{ 
    holder.rl.setBackgroundResource(R.drawable.roundcorner); 
} 
// or put some more else-if conditions and set background according to conditions.