두 가지 종류의 데이터 중 하나를 구분 기호로 표시하는 목록보기가 있습니다. 각 데이터 유형은 하나의 배열 목록에 저장됩니다. 따라서 두 가지 목록이 있습니다. 각 목록의 내용은 특수 행 (구분 기호)을 사용하여 다른 목록과 구분됩니다. 첫 번째 행은 분리 기호 행입니다. getView
에서 나는 정상적인 데이터 행과 구분자 행을 구별해야합니다.구분 기호로 ViewHolder 패턴을 구현하는 방법은 무엇입니까?
// returns true if a separator row must be displayed at pos.
private boolean isSeperator(int pos) {
return pos == 0 || pos == data.size() + 1;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater infalInflater = (LayoutInflater) this.context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(isSeperator(position)) {
convertView = infalInflater.inflate(R.layout.list_view_seperator, parent, false);
TextView seperator = (TextView) convertView.findViewById(R.id.tv_list_view_seperator);
seperator.setText("Seperator");
}
else {
convertView = infalInflater.inflate(R.layout.my_layout, parent, false);
TextView txtview = (TextView) convertView.findViewById(R.id.foo);
ImageView icon = (ImageView) convertView.findViewById(R.id.bar);
MyData myData = (MyData) getItem(position);
txtview.setText(myData.getName());
icon.setImageBitmap(myData.getIcon());
}
return convertView;
}
먼저 분리 기호가 현재 위치에 표시되어야하는지 확인합니다. 이것은 잘 작동합니다.
뷰 홀더 패턴을 구현하려고했지만 계속 실패합니다. 구분자를 포함하여 여러 유형의 행을 고려해야하는 경우에이 패턴을 사용하는 방법을 보여줄 수 있습니까?
다음은 Google의 예입니다. https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/SimpleSectionedListAdapter.java – harism