使用基于类别的分区标头实现RecyclerView

时间:2016-02-28 12:04:38

标签: android android-recyclerview

我正在尝试使用基于列表类别的自定义分区标头实现RecyclerView。我已经有一个基于类别排序的列表,所以当有且仅当一行的类别与前一行的类别不同时,我想要扩展标题。我一直在想办法怎么做,但这里有些困扰我的事情。它工作,但没有显示正确的行。我认为这是因为标题会增加项目数。任何人都可以帮助我吗?

这是我的适配器:

Pattern pattern = Pattern.compile("regex");

}

谢谢

2 个答案:

答案 0 :(得分:1)

尝试使用以下内容替换onBindViewHoldergetItemViewType方法:

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    if (holder instanceof HeaderViewHolder) {
        ((HeaderViewHolder) holder).vCategoryText.setText(notes.get(position + 1).category);
    } else {
        ItemViewHolder item = (ItemViewHolder) holder;
        Notes note = notes.get(position);
        item.vNotesNote.setText(note.notes);
        item.vNotesCat.setText(note.category);

        if (position + 1 < notes.size() &&
            !notes.get(position + 1).category.equals(note.category)) {
            notes.add(position + 1, null);
        }
    }
}

@Override
public int getItemViewType(int position) {
    if (notes.get(position) == null) {
        return TYPE_CATEGOORY;
    } else {
        return TYPE_ITEM;
    }
}

您可以删除String changing = "";

答案 1 :(得分:0)

library可能会解决您的问题。 还有一个解决方案是实现class扩展Arraylist<Your Object>override add(Object o)方法。在add(Object o)方法中,将新添加的类别与之前的类别进行比较并将标题对象添加到不同类别之间的列表中。但我不认为这会非常有效。