2010-12-14 96 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()方法。这在某些情况下可能会有用。