0
我試圖在我的ViewHolder
上使用viewType
將標題與其他項目分開。使用我目前的代碼,標題顯示正確,但沒有其他項目顯示在下面。如果我刪除了viewType
條件,所有項目都可以正確顯示,但是當然,標題沒有所需的視圖)。多行佈局適配器無法正確顯示
這裏是我的適配器代碼:
public class GradelistAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int ITEM = 1, HEADER = 0;
private List<ItemGrade> gradeList;
public class ItemViewHolder extends RecyclerView.ViewHolder {
public TextView course, grade;
public ItemViewHolder(View view) {
super(view);
course = (TextView) view.findViewById(R.id.course);
grade = (TextView) view.findViewById(R.id.grade);
}
}
public class HeaderViewHolder extends RecyclerView.ViewHolder {
public TextView header;
public HeaderViewHolder(View view) {
super(view);
header = (TextView) view.findViewById(R.id.year);
}
}
public GradelistAdapter(List<ItemGrade> gradelist) {
this.gradeList = gradelist;
}
@Override
public int getItemViewType(int position) {
if (gradeList.get(position).getGrade() == -1) {
return HEADER;
}
return ITEM;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
if (viewType == HEADER) {
View header = inflater.inflate(R.layout.gradelist_header, parent, false);
viewHolder = new HeaderViewHolder(header);
}
else{
View item = inflater.inflate(R.layout.gradelist_row, parent, false);
viewHolder = new ItemViewHolder(item);
}
Log.d("onCreateViewHolder", Integer.toString(viewType));
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ItemGrade entry = gradeList.get(position);
if (holder.getItemViewType() == HEADER) {
HeaderViewHolder headerViewHolder = (HeaderViewHolder) holder;
headerViewHolder.header.setText("Viti " + entry.getYear());
} else {
ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
itemViewHolder.course.setText(entry.getCourse());
itemViewHolder.grade.setText(Integer.toString(entry.getGrade()));
}
}
@Override
public int getItemCount() {
return gradeList.size();
}
你確定getGrade()只有-1值嗎? – KDeogharkar
好吧,目前是的,因爲你可以在'onCreateViewHolder()'看到,我在logcat中打印'viewType',它是正確的。第一個總是0(標題),下一個是1(項目)。我爲了測試的目的而放置-1,問題不在那裏。 – user3484582