listview android的问题

时间:2010-12-14 16:16:34

标签: android listview

我有一个listView,其中包含一些我为了获得一些不错的背景颜色而膨胀的数据。问题是我想得到一些很棒的分隔符,我不能根据行的数据设置DivivHeight(),因为看起来我不能在同一个getView()方法上膨胀两个视图,这里有一些代码: / p>

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,这就是为什么它找不到设置文本的原因。我怎么能解决这个问题。

最好的问候。

1 个答案:

答案 0 :(得分:0)

您可以使用自定义适配器根据需要为多种不同类型的布局进行充气。

为此,您只需要更改getViewTypeCount方法以返回所需的不同视图的类型(示例中为2,常规项和分隔符),并调整getView()方法以选择要显示的正确视图类型。

所有内容都在this great tutorial

中解释

注意:在本教程中,他们通过实现getItemViewType()方法来实现。这在某些情况下很有用。