ListView addHeaderView вызывает увеличение позиции на единицу?

Ниже приведен фрагмент кода с ListView. Я добавил emptyView и headerView. Добавление headerView вызывает увеличение позиции в onItemClick на единицу.

Таким образом, без headerView первый элемент списка будет иметь позицию 0, а headerView позиция первого элемента списка будет 1!

Это вызывает ошибки в моем адаптере, например при вызове getItem () и использовании некоторых других методов, смотрите ниже. Странная вещь: в методе getView () адаптера первый элемент списка запрашивается с позицией 0, даже если 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
        }
    });
}

Некоторые методы адаптера:

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

Это нормальное поведение при добавлении headerView ?? И как побороть проблемы в моем адаптере?

Ответы на вопрос(11)

Ваш ответ на вопрос