2010-07-15 55 views
1

我有一個ListView,我想用ArrayAdapter添加不同樣式的行。這些行是在我的應用程序的不同狀態下創建的,並且根據不同的狀態應該設置行的樣式(如顏色和東西)。樣式添加行到ArrayAdapter ListView Android

下面是一些僞代碼:

上創造:

mArrayAdapter = new ArrayAdapter(this, R.layout.message); 
mView = (ListView) findViewById(R.id.in); 
mView.setAdapter(mArrayAdapter); 

在不同的狀態,這是由使用的MessageHandler另一個線程觸發,將行添加到包含消息列表:

mArrayAdapter.add("Message"); 

這工作正常,消息彈出列表根據不同的狀態,但我想有不同的行風格。這個怎麼做?使用自定義Add()方法創建自定義ArrayAdapter的解決方案是什麼?

回答

1

您需要做的是創建自定義ArrayAdapter並覆蓋getView()方法。您可以決定是否將不同的樣式應用於該行。例如:

class CustomArrayAdapter extends ArrayAdapter { 
    CustomArrayAdapter() { 
     super(YourActivity.this, R.layout.message); 
    } 

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

     if (row==null) {              
      LayoutInflater inflater=getLayoutInflater(); 

      row=inflater.inflate(R.layout.message, parent, false); 
     } 

     // e.g. if you have a TextView called in your row with ID 'label' 
     TextView label=(TextView)row.findViewById(R.id.label); 
     label.setText(items[position]); 

     // check the state of the row maybe using the variable 'position' 
     if(I do not actually know whats your criteria to change style){ 
      label.setTextColor(blablabla); 
     } 

     return(row); 
    } 
} 
+0

感謝, 作品像索姆的調整後的魅力! – 2010-07-15 13:52:11

+0

有一些新的問題。 label.setTextColor()獲取整個標籤並設置每一行的顏色。它應該只設置新行的顏色,而不是已經在列表中的項目。 – 2010-07-15 16:10:35

相關問題