RecyclerView несколько раз вызывает свои методы при 1 элементе

Сделал RecyclerViewAdapter для нескольких элементов(ссылка и папка) и он начал багованно работать, а именно многоразово вызывать методы getItemCount(2 раза логи проходят,2 раза вызывается) и getItemViewType(тупо 2 раза вызывается) , хотя у меня в дате только 1 обьект подходит по условиям для адаптера. Есть похожий адаптер,но только для папок в MainActivity, без разных элементов, там все прекрасно работает,хотя размер считает вообще 3 раза по логам за один цикл адаптера...

viewType определяет какой обьект создавать(0 - папка, 1 - ссылка). Не смог придумать ничего лучше костыля в виде переменной j для использования метода getPosOfItem, который выводит элементы с нужным мне parentId по одной штуке за цикл адаптера. Это и есть причина краша, при втором вызове j = 1, а в методе только одно значение, ну и соответственно индекса больше 0 там быть не может, если у меня подходит только 1 элемент.

Как эту проблему решить? Если j = 0 всегда,то вопросов еще больше, цикл запускается аж 4 раза(напомню, у меня только 1 подходящий элемент и это определяется на самом первом методе), но для чего - не понятно.

public class RecyclerViewLinkAdapter extends RecyclerView.Adapter<RecyclerViewLinkAdapter.ViewHolder> {
    Context context;
    int favicons[];
    int ParentId;

    int j = 0;

    public RecyclerViewLinkAdapter(Context cont, ArrayList<MyData> links, int parentId, int favics[]){
        context = cont;
        MyApp.appInstance.linksData = links;
        favicons = favics;
        ParentId = parentId;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType == 0) { //folder
            LayoutInflater FolderInflater = LayoutInflater.from(context);
            View FolderView = FolderInflater.inflate(R.layout.folder_layout, parent, false);
            return new ViewHolder(FolderView, viewType);
        }
        else{ //link
            LayoutInflater LinkInflater = LayoutInflater.from(context);
            View LinkView = LinkInflater.inflate(R.layout.link_layout, parent, false);
            return new ViewHolder(LinkView, viewType);
        }
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        position = getPosition();
        j++;
        if (MyApp.appInstance.linksData.get(position).getURL().isEmpty()) {
            holder.folder_name.setText(MyApp.appInstance.linksData.get(position).getTitle());
            holder.foldericon.setImageResource(favicons[1]);

            holder.foldercard.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View view) {
                    CreateHintWindow();
                    return true;
                }
            });

            holder.foldercard.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                }
            });
        }
        else {
            holder.link_name.setText(MyApp.appInstance.linksData.get(position).getTitle());
            holder.linkicon.setImageResource(favicons[0]);

            holder.linkcard.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                CreateHintWindow();
                return true;
                }
            });

            holder.linkcard.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   
                }
            });
            }
    }

    @Override
    public int getItemCount() {
        int size = MyApp.appInstance.getItemsCount(ParentId);
        return size;
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView link_name, folder_name;
        ImageView linkicon, foldericon;
        CardView linkcard, foldercard;

        public ViewHolder(@NonNull View itemView, int viewType) {
            super(itemView);
            if (viewType == 0){
                folder_name = itemView.findViewById(R.id.Folder_Title);
                foldericon = itemView.findViewById(R.id.Folder_Icon);
                foldercard = itemView.findViewById(R.id.FolderCardView);
            }
            else {
                link_name = itemView.findViewById(R.id.Link_Title);
                linkicon = itemView.findViewById(R.id.Link_Icon);
                linkcard = itemView.findViewById(R.id.LinkCardView);
            }
        }
    }

    @Override
    public int getItemViewType(int position) {
        position = getPosition();
        int viewType;
        if (MyApp.appInstance.linksData.get(position).getURL().isEmpty()){
            viewType = 0; //folder
        }
        else {
            viewType = 1; //link
        }

        return viewType;
    }

    public int getPosition() {
        position = MyApp.appInstance.getPosOfItem(ParentId, j);
        return position;
    }
}


Ответы (0 шт):