¿Cómo agregar separadores / divisores de sección a un ListView?

Actualmente estoy creando un menú para mi aplicación, usando DrawerLayout y una subclase ArrayAdapter para lograr algo que se parezca al menú de cajón de Facebook.

Actualmente no tengo problemas para crear la lista, pero ahora que se ve bien, me gustaría agregar separadores entre diferentes tipos de opciones (es decir, opciones relacionadas con el usuario y aplicaciones) y una barra de búsqueda en la parte superior del menú.

El código de mi subclase de ArrayAdaptor actual es el siguiente:

public class DrawerMenuAdapter extends ArrayAdapter<String>{
    private Context context;
    private String[] values;
    private int resId;

    public DrawerMenuAdapter(Context context, int textViewResourceId, String[] values) {
        super(context, textViewResourceId, values);
        this.context = context;
        this.values = values;
        this.resId = textViewResourceId;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(this.resId, parent, false);

        TextView elementText = (TextView)rowView.findViewById(R.id.element_text);
        ImageView elementImage = (ImageView)rowView.findViewById(R.id.element_icon);
        String textValue = values[position];

        elementText.setText(textValue);

        //This switch adds the icons to the related elements
        switch (position){
            case 0:
                elementImage.setImageResource(R.drawable.search);
                break;
            case 1:
                elementImage.setImageResource(R.drawable.facebook_friends);
                break;
            case 2:
                elementImage.setImageResource(R.drawable.flirts_history);
                break;
            case 3:
                elementImage.setImageResource(R.drawable.premium);
                break;
            case 4:
                elementImage.setImageResource(R.drawable.settings);
                break;
            case 5:
                elementImage.setImageResource(R.drawable.share_app);
                break;
            case 6:
                elementImage.setImageResource(R.drawable.cgu);
                break;
        }


        return rowView;
    }
}

Supongo que tengo que anular la función que llena el ListView llamando a la función getView, pero no puedo encontrar qué función es.

Respuestas a la pregunta(2)

Su respuesta a la pregunta