Skip to content
This repository has been archived by the owner on Jun 18, 2020. It is now read-only.

Commit

Permalink
Fixed delete all created of details after rotate in adddetailsactivity
Browse files Browse the repository at this point in the history
  • Loading branch information
CoolONEOfficial committed May 6, 2018
1 parent 393a05b commit f1727c5
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import lombok.val;
import ru.coolone.travelquest.R;
import ru.coolone.travelquest.ui.fragments.quests.details.FirebaseMethods;
import ru.coolone.travelquest.ui.fragments.quests.details.add.PlaceDetailsAddAdapter;
import ru.coolone.travelquest.ui.fragments.quests.details.add.PlaceDetailsAddFragment;
import ru.coolone.travelquest.ui.fragments.quests.details.add.PlaceDetailsAddPagerAdapter;
import uk.co.deanwild.materialshowcaseview.MaterialShowcaseSequence;
Expand Down Expand Up @@ -71,7 +72,7 @@ public class AddDetailsActivity extends AppCompatActivity implements FirebaseMet

ProgressBar progressBar;

Fragment[] frags;
PlaceDetailsAddFragment[] frags;

@AfterViews
void afterViews() {
Expand All @@ -82,9 +83,10 @@ void afterViews() {
this
);
if(frags != null) {
pagerAdapter.tabFragments = (PlaceDetailsAddFragment[]) frags;
pagerAdapter.tabFragments = frags;
}
viewPager.setAdapter(pagerAdapter);
viewPager.setOffscreenPageLimit(MainActivity.SupportLang.values().length);
((PlaceDetailsAddFragment) pagerAdapter.getItem(viewPager.getCurrentItem()))
.addListener(
() -> {
Expand Down Expand Up @@ -228,13 +230,16 @@ protected void onCreate(Bundle savedInstanceState) {

// Restore frags
if(savedInstanceState != null) {
frags = new Fragment[MainActivity.SupportLang.values().length];
frags = new PlaceDetailsAddFragment[MainActivity.SupportLang.values().length];
for(val mLang: MainActivity.SupportLang.values()) {
frags[mLang.ordinal()] = getSupportFragmentManager().getFragment(
frags[mLang.ordinal()] = (PlaceDetailsAddFragment) getSupportFragmentManager().getFragment(
savedInstanceState,
mLang.lang
);
}
if(pagerAdapter != null) {
pagerAdapter.tabFragments = frags;
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
import java.util.ArrayList;
import java.util.List;

import lombok.Getter;
import lombok.Setter;

/**
* Created by radiationx on 14.09.17.
*/
Expand All @@ -19,6 +22,8 @@ public class BaseSectionedAdapter<
H extends BaseSectionedHeader, HVH extends BaseSectionedViewHolder,
I, IVH extends BaseSectionedViewHolder>
extends SectionedRecyclerViewAdapter<IVH> {
@Getter
@Setter
protected List<Pair<H, List<I>>> sections = new ArrayList<>();

public void addSection(Pair<H, List<I>> item) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,9 @@ public void onCreate(Bundle savedInstanceState) {
savedInstanceState,
FRAG_PLACE_DETAILS_ID
);
placeDetailsFragment.setFragmentListener(this);
if(placeDetailsFragment != null) {
placeDetailsFragment.setFragmentListener(this);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package ru.coolone.travelquest.ui.fragments.quests.details.add;

import android.os.Bundle;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView;
Expand All @@ -17,7 +21,9 @@
import org.androidannotations.annotations.FragmentArg;
import org.androidannotations.annotations.ViewById;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import lombok.val;
import ru.coolone.travelquest.R;
Expand All @@ -39,6 +45,12 @@
public class PlaceDetailsAddFragment extends Fragment {
private static final String TAG = PlaceDetailsAddFragment.class.getSimpleName();

private static final String KEY_RECYCLER_INSTANCE = "recyclerInstance";
private static final String KEY_RECYCLER_SECTIONS = "recyclerInstance";

private Parcelable recyclerInstance;
private List<Pair<BaseSectionedHeader, List<BaseQuestDetailsItem>>> recyclerSections;

@FragmentArg
public SupportLang lang;

Expand Down Expand Up @@ -87,7 +99,30 @@ void afterViews() {
);
recyclerAdapter = (PlaceDetailsAddAdapter) recycler.getAdapter();

refreshDetails();
if (recyclerInstance == null && recyclerSections == null)
refreshDetails();
else {
recyclerAdapter.setSections(recyclerSections);
recycler.getLayoutManager().onRestoreInstanceState(recyclerInstance);
}
}

@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);

outState.putParcelable(KEY_RECYCLER_INSTANCE, recycler.getLayoutManager().onSaveInstanceState());
outState.putSerializable(KEY_RECYCLER_SECTIONS, (Serializable) recyclerAdapter.getSections());
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if(savedInstanceState != null) {
recyclerInstance = savedInstanceState.getParcelable(KEY_RECYCLER_INSTANCE);
recyclerSections = (List<Pair<BaseSectionedHeader, List<BaseQuestDetailsItem>>>) savedInstanceState.getSerializable(KEY_RECYCLER_SECTIONS);
}
}

@Click(R.id.add_details_page_add_section_button)
Expand Down

0 comments on commit f1727c5

Please sign in to comment.