Я использую эту библиотеку для отображения нескольких типов представлений внутри RecyclerView.
Здесь я использую EnumMapBindAdapter для отображения списка пользовательских страниц.
У меня есть 4 класса DataBinder, каждое связующее имеет список размером 3 (размер может меняться в зависимости от сообщения пользователей). У меня проблема с getEnumFromPosition(), согласно моим предположениям количество выполнений метода getEnumFromPosition() должно быть равно числу связующих (4). Но этого не происходит. У меня всего 4 связующих, и я предполагаю, что метод getEnumFromPosition() должен выполняться только 4 раза (0,1,2,3), но выполнение выполняется. Мое предположение может быть неправильным, если я ошибаюсь, то как можно Я управляю 4 связующими внутри getEnumFromPosition() для разных позиций. Если я положу другой раздел внутри метода getEnumFromPosition(), тогда он вернет один вид, когда позиция превысит.
Вот код SampleEnumMapAdapter.java
 public class SampleEnumMapAdapter extends EnumMapBindAdapter<SampleEnumMapAdapter.SampleViewType> {
    enum SampleViewType{
        TEXT,IMAGE_AND_TEXT, AUDIO_AND_TEXT, VIDEO_AND_TEXT
    }
    public SampleEnumMapAdapter(){
        putBinder(SampleViewType.TEXT, new TextBinder(this));
        putBinder(SampleViewType.IMAGE_AND_TEXT, new ImageAndTextBinder(this));
        putBinder(SampleViewType.AUDIO_AND_TEXT, new AudioAndTextBinder(this));
        putBinder(SampleViewType.VIDEO_AND_TEXT, new VideoAndTextBinder(this));
    }
    public void setData(List<TextData> dataSetText ,List<ImageAndTextData> dataSetTextAndImage ,List<AudioAndTextData> dataSetTextAndAudio ,List<VideoAndTextData> dataSetTextAndVideo ) {
        ((TextBinder) getDataBinder(SampleViewType.TEXT)).addAll(dataSetText);
        ((ImageAndTextBinder) getDataBinder(SampleViewType.IMAGE_AND_TEXT)).addAll(dataSetTextAndImage);
        ((AudioAndTextBinder) getDataBinder(SampleViewType.AUDIO_AND_TEXT)).addAll(dataSetTextAndAudio);
        ((VideoAndTextBinder) getDataBinder(SampleViewType.VIDEO_AND_TEXT)).addAll(dataSetTextAndVideo);
    }
    @Override
    public SampleViewType getEnumFromPosition(int position){
        if (position == 0) {
            return SampleViewType.TEXT;
        } else if (position == 1) {
            return SampleViewType.IMAGE_AND_TEXT;
        } else if(position == 2){
            return SampleViewType.AUDIO_AND_TEXT;
        }else if(position == 3){
            return SampleViewType.VIDEO_AND_TEXT;
        }
        return null;
    }
    @Override
    public SampleViewType getEnumFromOrdinal(int ordinal) {
        return SampleViewType.values()[ordinal];
    }
}
