2016-06-28 45 views
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(); 
    } 
+0

你確定getGrade()只有-1值嗎? – KDeogharkar

+0

好吧,目前是的,因爲你可以在'onCreateViewHolder()'看到,我在logcat中打印'viewType',它是正確的。第一個總是0(標題),下一個是1(項目)。我爲了測試的目的而放置-1,問題不在那裏。 – user3484582

回答

0

這是尷尬。一切都沒問題,只是我的標題佈局填滿了整個屏幕,我需要向下滾動才能看到我的列表的其餘部分。