2011-11-21 41 views
0

我有一個名爲songtitle的alphebetically排序列表,我想在列表視圖中的此位置插入分隔符。我怎麼做?在列表視圖中插入分隔符

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++; 
       } 

回答

2

覆蓋ArrayAdapterView getView(int position, View convertView, ViewGroup parent)給你一個不同的視圖(膨脹不同的佈局)要在其中一個分頻器可能會奏效。

請參閱this教程以覆蓋getView方法。

希望它有幫助:)

+0

是不是有在ListView –

+0

插入東西的方法恐怕不行......名單適配器基礎數據的圖形表示。適配器中的每個「行」在列表中只有一行。 –

0

您可以編寫自定義適配器。您可以重寫getView,getItemViewType和getViewTypeCount,併爲項目組標題設置不同的佈局。喜歡的東西:

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; 
    } 
}