ListView addHeaderView hace que la posición aumente en uno?

A continuación se muestra un fragmento de código con un ListView. He añadido un emptyView y un headerView. Al agregar headerView, la posición en onItemClick se incrementa en uno.

Entonces, sin el headerView, el primer elemento de la lista tendría la posición 0, con el headerView la posición del primer elemento de la lista sería 1!

Esto causa errores en mi adaptador, por ej. cuando llame a getItem () y use otros métodos, vea más abajo. Algo extraño: en el método getView () del adaptador, el primer elemento de la lista se solicita con la posición 0, incluso si se agrega headerView.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ListView list = (ListView) viewSwitcher.findViewById(R.id.list);
    View emptyView = viewSwitcher.findViewById(R.id.empty);
    list.setEmptyView(emptyView);

    View sectionHeading = inflater.inflate(R.layout.heading, list, false);
    TextView sectionHeadingTextView = (TextView) sectionHeading.findViewById(R.id.headingText);
    sectionHeadingTextView.setText(headerText);
    list.addHeaderView(sectionHeading);

    list.setAdapter(listAdapter);

    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            listAdapter.getItem(position);
            //Do something with it
        }
    });
}

Algunos métodos de adaptador:

@Override
public int getViewTypeCount() {
    return TYPE_COUNT;
}

@Override
public int getItemViewType(int position) {
    return (position < items.size()) ? ITEM_NORMAL : ITEM_ADVANCED;
}

    @Override
public Product getItem(int position) {
    return items.get(position);
}
@Override
public boolean areAllItemsEnabled() {
    return false;
}

@Override
public boolean isEnabled(int position) {
    return (position < items.size());
}

¿Es este el comportamiento normal al agregar un headerView? ¿Y cómo superar los problemas en mi adaptador?

Respuestas a la pregunta(11)

Su respuesta a la pregunta