Как скрыть виджет в представлении Recycler в Android на основе данных JSON в onBindHolder

Привет у меня есть вид переработчика, который заполняется с помощью JSON. У меня есть текстовое представление, которое является именем категории и повторяется в массиве json. Я должен показать только один раз.

Example :
Row 1
**My Category Name 1**
My list name 1

Row 2
My list name 2

Row 3
**My Category Name 2**
My list name 1

Так что здесь мне нужно скрыть ** My Category Name ** на основе повторяющихся значений. Все работало отлично, но во время прокрутки в утилизаторе было видно, что его перепутали.

Мой класс адаптера

    @Override
    public void onBindViewHolder(final RecyclerViewQuest.MyViewHolder holder, final int position) {

        final QuestModel questModel=questModelArrayList.get(position);

        String masterTitle = questModel.getSurvycat();
        if(temptitle.equalsIgnoreCase(masterTitle))
        { holder.categoryName.setVisibility(View.GONE);
        }
        else
        {
            temptitle = masterTitle;
            holder.categoryName.setVisibility(View.VISIBLE);
            holder.categoryName.setText(masterTitle);
        }

        holder.categoryName.setText(questModel.getSurvycat());
        if(questModel.getQformat().equals("Y/N")){
            holder.radioGroupQuest.setTag(questModelArrayList.get(position));
            holder.questRadio.setText(questModel.getQlist());
            holder.layoutRadio.setVisibility(View.VISIBLE);
            holder.layoutEditText.setVisibility(View.GONE);

        }else {
            holder.questEditText.setText(questModel.getQlist());
            holder.layoutRadio.setVisibility(View.GONE);
            holder.layoutEditText.setVisibility(View.VISIBLE);
        }



}

Мои данные JSON

"messageText": [
        {
            "survycatid": 1,
            "survycat": "Category 1",
            "qsetid": 1,
            "qlistid": 1,
            "qlist": "Are you aware of this",
            "qformat": "obj"
        },
        {
            "survycatid": 1,
            "survycat": "Category 1",
            "qsetid": 1,
            "qlistid": 2,
            "qlist": "If yes, are you aware o.",
            "qformat": "Y/N"
        },
        {
            "survycatid": 1,
            "survycat": "Category 1",
            "qsetid": 1,
            "qlistid": 3,
            "qlist": "If NO, are you   aware of anyone who may be benefitted from the scheme, if included",
            "qformat": "Y/N"
        },
        {
            "survycatid": 2,
            "survycat": "Category 2",
            "qsetid": 1,
            "qlistid": 2,
            "qlist": "If yes, can you please provide the  of those to be included.",
            "qformat": "Y/N"
        },
        {
            "survycatid": 2,
            "survycat": "Category 2",
            "qsetid": 1,
            "qlistid": 5,
            "qlist": "Additional Comments",
            "qformat": "TextLine"
        },
        {
            "survycatid": 2,
            "survycat": "Category 2",
            "qsetid": 1,
            "qlistid": 1,
            "qlist": "Are you aware of the scheme",
            "qformat": "Y/N"
        },

Я пытался скрыть текстовое поле заголовка, оно работало с первой попытки, но, прокручивая его дальше, запуталось. Пожалуйста, найдите мне решение для этого.

Заранее спасибо. Если это небольшая техника, то прошу прощения за мое невежество.

1 ответ

Решение

Значение для "temptitle" не должно храниться как член класса. Вы должны проверить, если questModelArrayList.get(position-1).getSurvycat() равно questModelArrayList.get(position).getSurvycat(), Если это так, вы должны скрыть заголовок в этом ViewHolder, помните об особом случае, когда позиция равна 0.

Другие вопросы по тегам