我有一个名为songtitle的alphebetically排序列表,我想在列表视图中的此位置插入divider。我该怎么做?
adapter = new ArrayAdapter<String>(this,R.layout.song,songtitle);
int l= 0;
while(l < adapter.getCount()-1 ){
if(songtitle.get(l).charAt(0) == songtitle.get(l+1).charAt(0)){
adapter.add(songtitle.get(l));
}else{
///Insert Divider Here ////////
l++;
}
l++;
}
答案 0 :(得分:2)
覆盖View getView(int position, View convertView, ViewGroup parent)
的{{1}},为您提供一个不同的视图(扩展不同的布局),您可以在其中使用分隔符。
请参阅this教程以覆盖getView方法。
希望有所帮助:)
答案 1 :(得分:0)
您可以编写自定义适配器。您可以覆盖getView,getItemViewType和getViewTypeCount,并为items组标题设置不同的布局。类似的东西:
public class TestArrayAdapter extends ArrayAdapter<String> {
LayoutInflater mInflater;
private static final int
GROUP_START = 0,
ITEM = 1,
COUNT = 2;
public TestArrayAdapter(Context context, String[] objects) {
super(context, 0, objects);
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if (getItemViewType(position) == GROUP_START) {
v = mInflater.inflate(R.layout.group_start, parent, false);
((TextView)v.findViewById(R.id.item_group_header)).setText(
Character.toString(getItem(position).charAt(0)));
} else {
v = mInflater.inflate(R.layout.item, parent, false);
}
((TextView)v.findViewById(R.id.text)).setText(getItem(position));
return v;
}
@Override
public int getItemViewType(int position) {
if (position == 0) return GROUP_START;
return (getItem(position).charAt(0) == getItem(position - 1).charAt(0)) ?
ITEM : GROUP_START;
}
@Override
public int getViewTypeCount() {
return COUNT;
}
}