我有一个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,这就是为什么它找不到设置文本的原因。我怎么能解决这个问题。
最好的问候。
答案 0 :(得分:0)
您可以使用自定义适配器根据需要为多种不同类型的布局进行充气。
为此,您只需要更改getViewTypeCount方法以返回所需的不同视图的类型(示例中为2,常规项和分隔符),并调整getView()方法以选择要显示的正确视图类型。
所有内容都在this great tutorial
中解释注意:在本教程中,他们通过实现getItemViewType()方法来实现。这在某些情况下很有用。