Я установил SectionedRecyclerview
с несколькими разделами на Fragment
.Изначально все разделы открыты.После изменения Fragment
и повторного возврата к тому же Fragmnt состояние Recyclerview
не поддерживается.Это код для моего StatelessSection
public class SectionOfferFeed extends StatelessSection {
boolean expanded = true;
private String title;
ArrayList<Entry> entries;
private SparseBooleanArray spa = new SparseBooleanArray();
public SectionOfferFeed(String title, ArrayList<Entry> entries) {
super(R.layout.section_header, R.layout.offercard_new);
this.title = title;
this.entries = entries;
}
@Override
public int getContentItemsTotal() {
return expanded ? entries.size() : 0;
}
@Override
public RecyclerView.ViewHolder getItemViewHolder(View view) {
return new ItemViewHolder(view);
}
@Override
public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) {
final ItemViewHolder iHolder = (ItemViewHolder) holder;
Entry entry = entries.get(position);
iHolder.offerN.setText(entry.getOfferName());
iHolder.restName.setText(entry.getRestName());
if (entry.getIsMarked() != null) {
if ((!spa.get(position, false)) && (entry.getIsMarked().equals("Not Marked"))) {
spa.put(position, false);
iHolder.mark.setVisibility(View.VISIBLE);
iHolder.marfFilled.setVisibility(View.GONE);
} else if ((spa.get(position, true) && (entry.getIsMarked().equals("Marked")))) {
spa.put(position, true);
iHolder.marfFilled.setVisibility(View.VISIBLE);
iHolder.mark.setVisibility(View.GONE);
}
}
if (entry.getIsFinal() != null) {
if (entry.getIsFinal().equals("false")) {
iHolder.isFInal.setVisibility(View.GONE);
} else {
iHolder.isFInal.setVisibility(View.VISIBLE);
}
}
if (entry.getRest_img() != null) {
String string = entry.getRest_img();
if (!entry.getRest_img().equals("null")) {
byte[] imageBytes = Base64.decode(string, Base64.DEFAULT);
//decode base64 string to image
imageBytes = Base64.decode(entry.getRest_img(), Base64.DEFAULT);
Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
iHolder.rest_image.setImageBitmap(decodedImage);
} else {
iHolder.rest_image.setImageResource(R.drawable.dish);
}
}
iHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = adapter.getSectionPosition(iHolder.getAdapterPosition());
}
});
iHolder.mark.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
iHolder.marfFilled.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
@Override
public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) {
final HeaderViewHolder hHolder = (HeaderViewHolder) holder;
final int Hposition = hHolder.getAdapterPosition();
hHolder.headerTitle.setText(title);
hHolder.showCount.setText(String.valueOf("(" + entries.size() + ")"));
hHolder.rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
expanded = !expanded;
hHolder.Arrow.setImageResource(
expanded ? R.drawable.arrow_drop_up : R.drawable.arrow_drop_down
);
adapter.notifyDataSetChanged();
}
});
}
@Override
public RecyclerView.ViewHolder getHeaderViewHolder(View view) {
return new HeaderViewHolder(view);
}
}
Как сохранить и сохранить Section
состояние?