Quellcode durchsuchen

[회원가입][New] 회원 가입 아이템 정렬 기능 추가

hyodong.min vor 7 Jahren
Ursprung
Commit
8bdbbd4086

+ 38 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/signup/SignUpAdapter.java

@@ -3,9 +3,11 @@ package kr.co.zumo.app.lifeplus.view.fragment.signup;
 import android.support.annotation.NonNull;
 import android.support.v7.widget.RecyclerView;
 import android.util.Log;
+import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.LinearLayout;
 
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.view.model.SignUpItem;
@@ -29,51 +31,86 @@ public class SignUpAdapter extends RecyclerView.Adapter<BaseViewHolder> {
     this.signUpViewModel = signUpViewModel;
   }
 
+  // fixme 클래스로 변환 필요
+  private View getAlignedView(ViewGroup parent, View view, int alignType) {
+
+    LinearLayout layout = new LinearLayout(parent.getContext());
+    LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+    layout.setLayoutParams(param);
+    layout.setOrientation(LinearLayout.HORIZONTAL);
+    if(alignType == SignUpItem.ALIGN_START) {
+      layout.setGravity(Gravity.START);
+    }
+    else if(alignType == SignUpItem.ALIGN_END) {
+      layout.setGravity(Gravity.END);
+    }
+    else if(alignType == SignUpItem.ALIGN_CENTER) {
+      layout.setGravity(Gravity.CENTER);
+    }
+
+    layout.addView(view);
+
+    return layout;
+  }
+
   @NonNull
   @Override
   public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
     BaseViewHolder holder = null;
+    int index = signUpViewModel.getCurrentIndex();
+    SignUpItem item = signUpViewModel.getItem(index);
+    int alignType = item.getAlignType();
     View view;
     Log.i("APP# SignUpAdapter | onCreateViewHolder", "| viewType: " + viewType);
     switch (viewType) {
       case SignUpItem.SIGN_UP_TEXT:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new TextViewHolder(view);
         break;
       case SignUpItem.SIGN_UP_BENEFIT:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_benefit_list, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new BenefitHolder(view);
         break;
       case SignUpItem.SIGN_UP_BUTTON:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new SignUpButtonHolder(view);
         break;
       case SignUpItem.SIGN_UP_TWO_BUTTON:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new SignUpTwoButtonHolder(view);
         break;
       case SignUpItem.SIGN_UP_COIN:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new SignUpCoinHolder(view);
         break;
       case SignUpItem.SIGN_UP_NOTICE:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new SignUpNoticeHolder(view);
         break;
       case SignUpItem.SIGN_UP_TERMS:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new SignUpTermsHolder(view);
         break;
       case SignUpItem.SIGN_UP_TEXT_WITH_TITLE:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new SignUpTextWithTitleHolder(view);
         break;
       case SignUpItem.SIGN_UP_WAITING:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new SignUpWaitingHolder(view);
         break;
       case SignUpItem.SIGN_UP_DIVIDER:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_divider, parent, false);
+        view = getAlignedView(parent, view, alignType);
         holder = new SignUpDividerHolder(view);
         break;
       default:
@@ -94,6 +131,7 @@ public class SignUpAdapter extends RecyclerView.Adapter<BaseViewHolder> {
 
   @Override
   public int getItemViewType(int position) {
+    signUpViewModel.setCurrentIndex(position);
     SignUpItem item = signUpViewModel.getItem(position);
     return item.getItemType();
   }

+ 5 - 5
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/signup/SignUpFragment.java

@@ -69,7 +69,7 @@ public class SignUpFragment extends FragmentBase {
     viewModel = signUpViewModel;
 
     // fixme for test
-    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_LEFT, new TextBean(App.getInstance().getString(R.string.sign_up_hello_text)).toJson()));
+    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_START, new TextBean(App.getInstance().getString(R.string.sign_up_hello_text)).toJson()));
     ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_DIVIDER));
 
     SignUpBenefitBean bean = new SignUpBenefitBean("3 번째 텍스트", R.drawable.circle, "benefit text1", "benefit text2");
@@ -84,15 +84,15 @@ public class SignUpFragment extends FragmentBase {
 
     ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_BENEFIT, SignUpItem.ALIGN_CENTER, new SignUpBenefitListBean(list).toJson()));
     ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_DIVIDER));
-    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_BUTTON, SignUpItem.ALIGN_RIGHT, new TextBean("button").toJson()));
-    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_TWO_BUTTON, SignUpItem.ALIGN_CENTER, new TextBean("two button").toJson()));
+    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_BUTTON, SignUpItem.ALIGN_END, new TextBean("button").toJson()));
+    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_TWO_BUTTON, SignUpItem.ALIGN_START, new TextBean("two button").toJson()));
     ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_DIVIDER));
     ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_COIN, SignUpItem.ALIGN_CENTER, new TextBean("coin").toJson()));
-    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_NOTICE, SignUpItem.ALIGN_CENTER, new TextBean("SIGN_UP_NOTICE").toJson()));
+    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_NOTICE, SignUpItem.ALIGN_START, new TextBean("SIGN_UP_NOTICE").toJson()));
     ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_TERMS, SignUpItem.ALIGN_CENTER, new TextBean("SIGN_UP_TERMS").toJson()));
     ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_DIVIDER));
     ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT_WITH_TITLE, SignUpItem.ALIGN_CENTER, new TextBean("SIGN_UP_TEXT_WITH_TITLE").toJson()));
-    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_WAITING, SignUpItem.ALIGN_CENTER, new TextBean("SIGN_UP_WAITING").toJson()));
+    ((SignUpViewModel) viewModel).addItem(new SignUpItem(SignUpItem.SIGN_UP_WAITING, SignUpItem.ALIGN_START, new TextBean("SIGN_UP_WAITING").toJson()));
     adapter.notifyDataSetChanged();
     return viewModel;
   }

+ 3 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/model/SignUpItem.java

@@ -28,9 +28,9 @@ public class SignUpItem {
   public static final int SIGN_UP_NOTICE = 8;
   public static final int SIGN_UP_DIVIDER = 9;
 
-  public static final int ALIGN_LEFT = 0;
+  public static final int ALIGN_START = 0;
   public static final int ALIGN_CENTER = 1;
-  public static final int ALIGN_RIGHT = 2;
+  public static final int ALIGN_END = 2;
 
   protected String jsonString;
   protected int itemType;
@@ -89,7 +89,7 @@ public class SignUpItem {
   /**
    * 좌/우/중앙 정렬
    *
-   * @return ALIGN_LEFT|ALIGN_CENTER|ALIGN_RIGHT
+   * @return ALIGN_START|ALIGN_CENTER|ALIGN_END
    */
   public int getAlignType() {
     return alignType;

+ 20 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/model/SignUpViewModel.java

@@ -25,6 +25,8 @@ public class SignUpViewModel extends ViewModel {
 
   ObservableList<SignUpItem> signUpList;
 
+  int currentIndex;
+
   public SignUpViewModel(ScreenChanger screenChanger) {
     super(screenChanger);
 
@@ -88,4 +90,22 @@ public class SignUpViewModel extends ViewModel {
     return signUpList.get(index);
   }
 
+  /**
+   * 현재 item 의 인덱스 저장
+   *
+   * @param index 인덱스
+   */
+  public void setCurrentIndex(int index) {
+    currentIndex = index;
+  }
+
+  /**
+   * 현재 item 인덱스를 반환
+   *
+   * @return 인덱스
+   */
+  public int getCurrentIndex() {
+    return currentIndex;
+  }
+
 }