2011-10-25 68 views
0

在我的應用程序中,我有列表,我用陣列適配器給它充氣。每件事情都可以,我的結果在列表中。Android,更改陣列適配器中列表的背景?

我喜歡改變列表的背景顏色(偶數行紅色例如奇數行綠色)。

這是我行的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <RelativeLayout 
     android:id="@+id/rllist" 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="15dip" 
     android:layout_marginBottom="15dip" 
     > 
     <TextView 
      android:id="@+id/outstanding_contractdate" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#ffffff" 
      android:textSize="15sp" /> 
     <TextView 
      android:id="@+id/outstanding_contractno" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@id/outstanding_contractdate" 
      android:paddingLeft="20dip" 
      android:textColor="#ffffff" 
      android:textSize="15sp" /> 
     <TextView 
      android:id="@+id/outstanding_contractamount" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:textSize="15sp" /> 
    </RelativeLayout> 
</LinearLayout> 

我已經寫了下面的代碼:

static class ViewHolder { 
    RelativeLayout rlList; 
    TextView tvContDate; 
    TextView tvContNo; 
    TextView tvContAmount; 
} 

和數組適配器我有這樣的一個:

public View getView(int position, View convertView, ViewGroup parent){ 
      ViewHolder holder; 
      View row = convertView; 

      if(row == null){ 
       LayoutInflater inflater = getLayoutInflater(); 
       row = inflater.inflate(R.layout.list_outstanding, parent, false); 
       //convertView = mInflater.inflate(R.layout.list_outstanding, parent, false); 

       holder = new ViewHolder(); 
       holder.rlList = (RelativeLayout) convertView.findViewById(R.id.rllist); 
       holder.tvContDate = (TextView) row.findViewById(R.id.outstanding_contractdate); 
       holder.tvContNo = (TextView) row.findViewById(R.id.outstanding_contractno); 
       holder.tvContAmount = (TextView) row.findViewById(R.id.outstanding_contractamount); 

       row.setTag(holder); 
      } else { 
       holder = (ViewHolder) row.getTag(); 
      } 

       holder.tvContDate.setText(llData.get(position).split(",")[0].trim()); 
       holder.tvContNo.setText(llData.get(position).split(",")[1].trim()); 
       holder.tvContAmount.setText(llData.get(position).split(",")[2].trim()); 

       if(position%2 != 0) 
        holder.rlList.setBackgroundColor(0x00FF00); 
       else 
        holder.rlList.setBackgroundColor(0XFF0000); 

      return(row); 
     } 

運行的應用程序後,當我到達這個代碼時,發生錯誤。根據logcat的是「空指針異常」,並指出這條線在getView():

holder.rlList = (RelativeLayout) convertView.findViewById(R.id.rllist); 

似乎一切正常,但我不知道我的問題是!

===========

更新

我上面的行已更改爲:

holder.rlList = (RelativeLayout) row.findViewById(R.id.rllist); 

現在我已經不適用我的結果,但背景是什麼? !

+0

不使用row.setBackgroundColor(...);工作? –

+0

沒有工作。仍然所有的背景都是黑色的:( – Hesam

+0

)你用顏色的HashCode來嘗試嗎? –

回答

2

嘗試使用

if(position%2 != 0) 
     holder.rlList.setBackgroundColor(Color.parseColor("#00ff00")); 
else 
     holder.rlList.setBackgroundColor(Color.parseColor("#ff0000")); 
+1

對於遲到的反應感到抱歉。對未來的訪問者:我更改了holder.rlList.setBackgroundColor(Color.parseColor(「#00ff00」));爲了row.setBackgroundColor(Color.parseColor(「#00ff00」));因爲我在之前定義了行。不起作用 – Hesam

+0

@Hesam:很高興幫助。:) – Hiral

相關問題