浏览代码

[마이][Bug] FAQ 프래그먼트 뒤로 이동 시 ViewPager 데이터 갱신 되지 않던 현상 수정

hyodong.min 7 年之前
父节点
当前提交
0078523d60

+ 3 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/model/FAQModel.java

@@ -53,11 +53,13 @@ public class FAQModel extends Model {
     disposeLoading();
   }
 
-  private void disposeLoading(){
+  private void disposeLoading() {
     if (null != disposable) {
       disposable.dispose();
       disposable = null;
     }
+
+    faqBeans = null;
   }
 
   /**

+ 8 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/faq/FAQFragment.java

@@ -64,6 +64,8 @@ public class FAQFragment extends FragmentBase<FAQPresenter> implements IFAQView
     tabLayoutFaq = findViewById(R.id.faq_tab_layout);
     viewPagerFaq = findViewById(R.id.faq_view_pager);
     tabLayoutFaq.setTabGravity(TabLayout.GRAVITY_FILL);
+
+    presenter.onEvent(new Event.Builder(Event.INIT).build());
   }
 
   @Override
@@ -89,15 +91,18 @@ public class FAQFragment extends FragmentBase<FAQPresenter> implements IFAQView
 
   @Override
   public void drawList(List<FAQBean> beans) {
+
+    Log.i("APP# FAQFragment | drawList", "|" + beans.toString());
+
     String[] tab = {CATEGORY_ALL, CATEGORY_MEMBER, CATEGORY_BENEFIT, CATEGORY_ETC};
-    faqPagerAdapter = new FAQPagerAdapter(getActivity().getSupportFragmentManager(), tab, beans);
+    faqPagerAdapter = new FAQPagerAdapter(getChildFragmentManager(), tab, beans);
     tabLayoutFaq.setupWithViewPager(viewPagerFaq, true);
     viewPagerFaq.setAdapter(faqPagerAdapter);
 
+    faqPagerAdapter.notifyDataSetChanged();
   }
 
   @Override
-  public void onDestroyView() {
-    super.onDestroyView();
+  protected void onAfterDestroy() {
   }
 }

+ 8 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/faq/FAQListFragment.java

@@ -42,6 +42,7 @@ public class FAQListFragment extends Fragment {
   }
 
   public static FAQListFragment newInstance(int index) {
+
     FAQListFragment fragment = new FAQListFragment();
     Bundle args = new Bundle();
     args.putInt(PARAM_INDEX, index);
@@ -64,8 +65,13 @@ public class FAQListFragment extends Fragment {
   }
 
   @Override
-  public void onActivityCreated(@Nullable Bundle savedInstanceState) {
-    super.onActivityCreated(savedInstanceState);
+  public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+    super.onViewCreated(view, savedInstanceState);
+  }
+
+  @Override
+  public void onStart() {
+    super.onStart();
 
     listener.onInit(this, this.index);
   }

+ 7 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/faq/FAQPagerAdapter.java

@@ -31,6 +31,7 @@ public class FAQPagerAdapter extends FragmentStatePagerAdapter implements FAQLis
 
     this.tabs = tabs;
     this.faqBeans = beans;
+
   }
 
   @Override
@@ -47,6 +48,12 @@ public class FAQPagerAdapter extends FragmentStatePagerAdapter implements FAQLis
     return PAGE_COUNT;
   }
 
+  @Override
+  public int getItemPosition(Object object) {
+    // POSITION_NONE makes it possible to reload the PagerAdapter
+    return POSITION_NONE;
+  }
+
   @Nullable
   @Override
   public CharSequence getPageTitle(int position) {

+ 20 - 5
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/FAQPresenter.java

@@ -28,9 +28,13 @@ import kr.co.zumo.app.lifeplus.view.dialog.IDialogResultListener;
 public class FAQPresenter extends Presenter<FAQModel, IFAQView> {
 
   DialogBase alertDialog;
+  boolean isLoading = false;
+  boolean isReady = false;
 
   public FAQPresenter(FAQModel model, IFAQView view) {
     super(model, view);
+
+    this.model.loadFaq();
   }
 
   @Override
@@ -41,12 +45,16 @@ public class FAQPresenter extends Presenter<FAQModel, IFAQView> {
 
   @Override
   protected void onEventInternal(Event event) {
-    switch (event.getEventId()){
+    switch (event.getEventId()) {
       case Event.FAQ:
         onCommand(new FragmentBackStackChangeCommand(ScreenID.FAQ_WRITE, ScreenID.DIRECTION_NEXT));
         break;
-        default:
-          break;
+      case Event.INIT:
+        isReady = true;
+        render();
+        break;
+      default:
+        break;
     }
   }
 
@@ -60,7 +68,7 @@ public class FAQPresenter extends Presenter<FAQModel, IFAQView> {
 
   @Override
   protected void startInternal() {
-    model.loadFaq();
+
   }
 
   @Override
@@ -85,13 +93,20 @@ public class FAQPresenter extends Presenter<FAQModel, IFAQView> {
         showAlert(event.getString());
         break;
       case Event.RESULT:
-        view.drawList(model.getFaqBeans());
+        isLoading = true;
+        render();
         break;
       default:
         break;
     }
   }
 
+  private void render() {
+    if (isReady && isLoading) {
+      view.drawList(model.getFaqBeans());
+    }
+  }
+
   private void showAlert(String str) {
     alertDialog = DialogBuilder.create(DialogID.CONFIRM)
       .listener(new IDialogResultListener() {