Как скрыть виджет в представлении 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.