I have a list of options with CheckBoxes in RecyclerView. When I tap on checkbox the state is changed, but after scrolling up and down the state of the checkboxes are losts.
How to save state of checkboxes ? I'm trying to change the state in adapter:
private void setAdapter() {
    if (mAdapter == null) {
        mAdapter = new FacetChildAdapter(mValues, getActivity(), query.getSpecValueAsString(mParentValue.getSlug())) {
            @Override
            protected void onCheckBoxRowClicked(CheckboxRow box, Value value, int adapterPosition) {
                if (type == FacetChildType.Brands) {
                    if (box.isChecked()) {
                        query.removeBrand(value);
                    } else {
                        query.addBrand(value);
                    }
                }
                else if (type == FacetChildType.Categories) {
                    if (box.isChecked()) {
                        query.removeCategory(value);
                    } else {
                        query.addCategory(value);
                    }
                }
                else if (type == FacetChildType.Deals) {
                    if (box.isChecked()) {
                        query.removeDealType(value);
                    } else {
                        query.addDealType(value);
                    }
                }
                else if (type == FacetChildType.Specifications) {
                    if (box.isChecked()) {
                        query.removeSpecification(mParentValue.getSlug(), value);
                    } else {
                        query.addSpecification(mParentValue.getSlug(), value);
                    }
                }
                box.setChecked(!box.isChecked());
                mHeading.setBackText(getResources().getString(R.string.apply));
            }
        };
        mRecyclerView.setAdapter(mAdapter);
    } else {
        mAdapter.setSource(query.getSpecValueAsString(mParentValue.getSlug()));
        mAdapter.refresh(mValues);
    }
}
FacetChildAdapter:
public class FacetChildAdapter extends GenericRecycleAdapter<Value, Holders.TextImageHolder> {
private String source;
public FacetChildAdapter(List<Value> list, Context context, String source) {
    super(list, context);
    this.source = source;
}
public void setSource(String source) {
    this.source = source;
}
@Override
protected void onItem(Value s) {
}
public Holders.TextImageHolder getCustomHolder(View v) {
    return new Holders.TextImageHolder(v) {
        @Override
        public void onCheckBoxRowClicked(CheckboxRow v) {
            FacetChildAdapter.this.onCheckBoxRowClicked(v, mList.get(getAdapterPosition()), getAdapterPosition());
        }
    };
}
protected void onCheckBoxRowClicked(CheckboxRow box, Value value, int adapterPosition) {
}
@Override
public int getLayout() {
    return R.layout.facet_child_row;
}
@Override
public void onSet(final Value item,final Holders.TextImageHolder holder) {
    holder.checkboxRow.setTitle(Html.fromHtml(item.getFullName()));
    holder.checkboxRow.setSubText("(" + String.valueOf(item.getCount()) + ")");
    holder.checkboxRow.setChecked(ShowProductsWithId.containsValueInValueStringLine(source, item.getSlug()));
    holder.checkboxRow.setDisabled(!item.isEnabled());
}
}