我有一个显示两种不同类型数据的列表视图,一种是分隔符。每种数据类型都存储在一个数组列表中。因此有两个列表。每个列表的内容由一个特殊的行(分隔符)与另一个列表分隔。第一行也是分隔符行。在getView
我必须区分普通数据行和分隔符行。
// returns true if a separator row must be displayed at pos.
private boolean isSeperator(int pos) {
return pos == 0 || pos == data.size() + 1;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(isSeperator(position)) {
convertView = infalInflater.inflate(R.layout.list_view_seperator, parent, false);
TextView seperator = (TextView) convertView.findViewById(R.id.tv_list_view_seperator);
seperator.setText("Seperator");
}
else {
convertView = infalInflater.inflate(R.layout.my_layout, parent, false);
TextView txtview = (TextView) convertView.findViewById(R.id.foo);
ImageView icon = (ImageView) convertView.findViewById(R.id.bar);
MyData myData = (MyData) getItem(position);
txtview.setText(myData.getName());
icon.setImageBitmap(myData.getIcon());
}
return convertView;
}
首先,我检查是否必须在当前位置显示分隔符。这工作正常。
我试图实现视图持有者模式,但我经常失败。在必须考虑包括分隔符在内的不同类型的行的情况下,有人可以告诉我如何使用这种模式吗?