ListView addHeaderView faz com que a posição aumente em um?

Abaixo está um trecho de código com um ListView. Eu adicionei um emptyView e um headerView. Adicionar o headerView faz com que a posição no onItemClick seja aumentada em um.

Portanto, sem o headerView, o primeiro elemento da lista teria a posição 0, com o headerView, a posição do primeiro elemento da lista seria 1!

Isso causa erros no meu adaptador, por exemplo Ao chamar getItem () e usando alguns outros métodos, veja abaixo. Coisa estranha: No método getView () do adaptador, o primeiro elemento da lista é solicitado com a posição 0, mesmo que o headerView seja adicionado !!

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

Alguns 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());
}

Este é o comportamento normal ao adicionar um headerView? E como superar os problemas no meu adaptador?

questionAnswers(11)

yourAnswerToTheQuestion