아래는 ListView가있는 코드 조각입니다. emptyView와 headerView를 추가했습니다. headerView를 추가하면 onItemClick의 위치가 1 씩 증가합니다.
따라서 headerView가 없으면 첫 번째 목록 요소의 위치가 0이고 headerView가있는 첫 번째 목록 요소의 위치는 1이됩니다!
이로 인해 내 어댑터에서 오류가 발생합니다. 예를 들어 getItem ()을 호출하고 다른 메서드를 사용할 때 아래를 참조하십시오. 이상한 점 : 어댑터의 getView () 메서드에서 headerView가 추가 되더라도 첫 번째 목록 요소가 위치 0으로 요청됩니다 !!
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를 추가 할 때 이것이 정상적인 동작입니까 ?? 내 어댑터의 문제를 극복하는 방법은 무엇입니까?