2010-12-14 118 views
0

我有一個listView與一些數據,我膨脹得到一些不錯的背景顏色。問題是我想得到一些真棒分隔符,我無法根據行的數據設置DividerHeight(),因爲它似乎不能在相同的getView()方法上膨脹兩個視圖,下面是一些代碼:問題listview android

public View getView(int position, View convertView, ViewGroup parent){ 
    String myText = getItem(position).toString();   
    String firstLetter = Character.toString(myText.charAt(0)); 
    if(convertView == null){ 
     convertView = this.inflater.inflate(R.layout.lettersrows, null); 

    } 
    TextView tv = (TextView)convertView.findViewById(R.id.label); 
    tv.setText(this.list.get(position)); 
    tv.setTextSize(25); 
    convertView.setBackgroundColor((position & 1) == 1 ? Color.WHITE : Color.LTGRAY); 

    /**This is what i want to do*/ 
    if(!firstLetter.equals("A")){ 
     convertView = this.inflater.inflate(R.layout.letters, null); 
     ListView lv = (ListView)convertView.findViewById(R.id.letters_listview); 
     lv.setDividerHeight(3); 
    } 
    return convertView; 
} 

我得到的錯誤是一個NullPointerException:tv.setText(this.list.get(position)); 我猜想那個convertView現在是一個ListView,這就是爲什麼它沒有找到設置文本的位置。我怎麼能解決這個問題。

此致敬禮。

+0

'我想得到一些真棒分隔符'。我很抱歉,android不支持「真棒」分隔符,只是普通的分隔符。 – Falmarri 2010-12-14 18:50:25

+0

這似乎是一個非常糟糕的想法。爲什麼轉換視圖中的內容會影響您返回的視圖?這似乎非常不確定。 – Falmarri 2010-12-14 18:51:56

回答

0

您可以使用自定義適配器根據需要膨脹儘可能多的不同類型的佈局。爲此,你只需要改變你的getViewTypeCount方法來返回你想要的不同視圖的類型(在你的例子中是2,常規項目和分隔符),並調整你的getView()方法來選擇正確的視圖類型來顯示。

一切都在this great tutorial

註解釋:在本教程中,他們做到這一點的實現getItemViewType()方法。這在某些情況下可能會有用。