2010-12-14 16 views
0

私はいくつかのデータを使ってリストビューを取得しました。問題は、私はいくつかの素晴らしいセパレータを取得したいと私はsetDividerHeight()行のデータに応じて、私は同じgetView()メソッドで2つのビューを膨らませることができないようですので、ここでいくつかのコード:リストビューの問題

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

「私はいくつかの素晴らしいセパレータを取得したいです。申し訳ありませんが、アンドロイドは「素晴らしい」セパレータをサポートしていません。 – Falmarri

+0

これは本当に悪い考えのようです。変換されたビューの内容は、返されるビューにどのような影響を与えますか?これは非常に決定的ではないようです。 – Falmarri

答えて

0

カスタムアダプターを使用して、さまざまな種類のレイアウトを必要なだけ膨張させることができます。

これは、getViewTypeCountメソッドを変更して、必要な異なるビューのタイプ(例、通常のアイテムとセパレータでは2)を返し、表示する正しいビュータイプを選択するようにgetView()メソッドを調整する必要があります。 。

すべてがthis great tutorial

ノートで説明されています。チュートリアルでは、彼らはgetItemViewType()メソッドを実装することによってそれを行います。これは場合によっては有益です。

関連する問題