Skip to content
This repository has been archived by the owner on Mar 16, 2024. It is now read-only.

onCreateHeaderViewHolder is not called #85

Open
ahmedalaa92 opened this issue Jan 12, 2018 · 1 comment
Open

onCreateHeaderViewHolder is not called #85

ahmedalaa92 opened this issue Jan 12, 2018 · 1 comment

Comments

@ahmedalaa92
Copy link

ahmedalaa92 commented Jan 12, 2018

the onCreateHeaderViewHolder override method is not being called however onCreateItemViewHolder is called and working fine
Kindly check my adapter class below
`

public class MenuRecyclerAdapter extends SectioningAdapter {

private Context context;
private ArrayList<Menu> data;
private ArrayList<Section> sections = new ArrayList<>();

public MenuRecyclerAdapter(Context context, ArrayList<Menu> menuList) {
    this.context = context;
    this.data = menuList;
    populateSections();
}

private void populateSections() {
    for (int i = 0; i < data.size(); i++) {
        appendSection(i, data.get(i).getMenuListArrayList().size());
    }
}

private void appendSection(int index, int itemCount) {
    Section section = new Section();
    section.index = index;
    section.copyCount = 0;
    section.header = data.get(index).getCategoryName();

    for (int j = 0; j < itemCount; j++) {
        section.items.add(data.get(index).getMenuListArrayList().get(j).getItemNameEn());
    }

    sections.add(section);
}

@Override
public ItemViewHolder onCreateItemViewHolder(ViewGroup parent, int itemType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View v = inflater.inflate(R.layout.menu_item, parent, false);
    return new ItemViewHolder(v);
}

@Override
public HeaderViewHolder onCreateHeaderViewHolder(ViewGroup parent, int headerType) {
    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
    View v = inflater.inflate(R.layout.header_view_sticky_header, parent, false);
    return new HeaderViewHolder(v);
}


@Override
public void onBindItemViewHolder(SectioningAdapter.ItemViewHolder viewHolder, int sectionIndex, int itemIndex, int itemType) {
    Section s = sections.get(sectionIndex);
    ItemViewHolder ivh = (ItemViewHolder) viewHolder;
    ivh.txtMenuItemName.setText(s.items.get(itemIndex));

// ivh.adapterPositionTextView.setText(Integer.toString(getAdapterPositionForSectionItem(sectionIndex, itemIndex)));
}

@Override
public void onBindHeaderViewHolder(SectioningAdapter.HeaderViewHolder viewHolder, int sectionIndex, int headerType) {
    Section s = sections.get(sectionIndex);
    HeaderViewHolder hvh = (HeaderViewHolder) viewHolder;

// hvh.adapterPositionTextView.setText(Integer.toString(getAdapterPositionForSectionHeader(sectionIndex)));

// if (USE_DEBUG_APPEARANCE) {
// hvh.textView.setText(pad(sectionIndex * 2) + s.header);
// viewHolder.itemView.setBackgroundColor(0x55FF9999);
// } else {
hvh.txtHeader.setText(s.header);
// }

// hvh.updateSectionCollapseToggle(isSectionCollapsed(sectionIndex));
}

private class Section {
    int index;
    int copyCount;
    String header;
    String footer;
    ArrayList<String> items = new ArrayList<>();

    public Section duplicate() {
        Section c = new Section();
        c.index = this.index;
        c.copyCount = this.copyCount + 1;
        c.header = c.index + " copy " + c.copyCount;
        c.footer = this.footer;
        for (String i : this.items) {
            c.items.add(i + " copy " + c.copyCount);
        }

        return c;
    }

    public void duplicateItem(int item) {
        String itemCopy = items.get(item) + " copy";
        items.add(item + 1, itemCopy);
    }

}

public class ItemViewHolder extends SectioningAdapter.ItemViewHolder {
    TextView txtMenuItemName;

    ItemViewHolder(View itemView) {
        super(itemView);
        txtMenuItemName = itemView.findViewById(R.id.txtMenuItemName);
    }
}

public class HeaderViewHolder extends SectioningAdapter.HeaderViewHolder {
    TextView txtHeader;

    HeaderViewHolder(View itemView) {
        super(itemView);
        txtHeader = itemView.findViewById(R.id.txtHeader);
    }
}

@Override
public int getNumberOfSections() {
    return sections.size();
}

@Override
public int getNumberOfItemsInSection(int sectionIndex) {
    return sections.get(sectionIndex).items.size();
}

}
`

@baiguangyuan
Copy link

Did you override doesSectionHaveHeader function of SectioningAdapter.


	/**
	 * @param sectionIndex index of the section in question
	 * @return true if this section has a header
	 */
	public boolean doesSectionHaveHeader(int sectionIndex) {
		return false;
	}

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants