Di bawah ini adalah potongan kode dengan ListView. Saya menambahkan emptyView dan headerView. Menambahkan headerView menyebabkan posisi di onItemClick bertambah satu.
Jadi tanpa headerView, elemen list pertama akan memiliki posisi 0, dengan headerView, posisi elemen daftar pertama adalah 1!
Ini menyebabkan kesalahan pada adaptor saya, misalnya saat memanggil getItem () dan menggunakan beberapa metode lain, lihat di bawah. Hal yang aneh: Dalam metode getView () dari adaptor, elemen daftar pertama diminta dengan posisi 0 bahkan jika headerView ditambahkan !!
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
}
});
}
Beberapa metode adaptor:
@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());
}
Apakah ini perilaku normal saat menambahkan headerView ?? Dan bagaimana cara mengatasi masalah pada adaptor saya?