0

songtitle というアルファベット順に並べ替えられたリストがあり、リスト ビューのこの位置に仕切りを挿入したいと考えています。それ、どうやったら出来るの?

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

2 に答える 2

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;
    }
}
于 2011-11-21T23:23:21.273 に答える