Explorar o código

[회원가입][New] 회원 가입 - 버튼 이벤트 추가

hyodong.min %!s(int64=7) %!d(string=hai) anos
pai
achega
82e75ea55e

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

@@ -10,8 +10,11 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
 
+import com.google.gson.Gson;
+
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.databinding.SignUpAgreeBinding;
+import kr.co.zumo.app.databinding.SignUpButtonBinding;
 import kr.co.zumo.app.lifeplus.view.model.SignUpItem;
 import kr.co.zumo.app.lifeplus.view.model.SignUpViewModel;
 
@@ -53,6 +56,7 @@ public class SignUpAdapter extends RecyclerView.Adapter<BaseViewHolder> {
     SignUpItem item = signUpViewModel.getItem(index);
     int alignType = item.getAlignType();
     View view;
+    LayoutInflater inflater = LayoutInflater.from(parent.getContext());
     Log.e("APP# SignUpAdapter | onCreateViewHolder", "| index: " + index + " viewType: " + viewType + ", alignType: " + alignType);
     switch (viewType) {
       case SignUpItem.SIGN_UP_TEXT:
@@ -66,9 +70,10 @@ public class SignUpAdapter extends RecyclerView.Adapter<BaseViewHolder> {
         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 = getWrappedView(parent, view);
-        holder = new SignUpButtonHolder(view);
+//        view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_button, parent, false);
+        SignUpButtonBinding signUpButtonBinding = SignUpButtonBinding.inflate(inflater, parent, false);
+        view = getWrappedView(parent, signUpButtonBinding.getRoot());
+        holder = new SignUpButtonHolder(view, signUpButtonBinding);
         break;
       case SignUpItem.SIGN_UP_TWO_BUTTON:
         view = LayoutInflater.from(parent.getContext()).inflate(R.layout.sign_up_text_view, parent, false);
@@ -106,7 +111,6 @@ public class SignUpAdapter extends RecyclerView.Adapter<BaseViewHolder> {
         holder = new SignUpDividerHolder(view);
         break;
       case SignUpItem.SIGN_UP_AGREE:
-        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
 //        SignUpAgreeBinding binding = DataBindingUtil.inflate(inflater, R.layout.sign_up_agree, parent, false);
         SignUpAgreeBinding binding = SignUpAgreeBinding.inflate(inflater, parent, false);
         view = getWrappedView(parent, binding.getRoot());
@@ -127,7 +131,7 @@ public class SignUpAdapter extends RecyclerView.Adapter<BaseViewHolder> {
     SignUpItem item = signUpViewModel.getItem(position);
     holder.draw(item);
     holder.align(item);
-    Log.w("APP# SignUpAdapter | onBindViewHolder", "|" + item.getJsonString());
+    Log.w("APP# SignUpAdapter | onBindViewHolder", "|" + new Gson().toJson(item));
   }
 
   @Override

+ 14 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/signup/SignUpButtonHolder.java

@@ -7,8 +7,11 @@ import android.view.View;
 import android.widget.Button;
 
 import kr.co.zumo.app.R;
+import kr.co.zumo.app.databinding.SignUpButtonBinding;
+import kr.co.zumo.app.lifeplus.model.SuperModel;
 import kr.co.zumo.app.lifeplus.view.model.SignUpItem;
-import kr.co.zumo.app.lifeplus.view.model.bean.TextBean;
+import kr.co.zumo.app.lifeplus.view.model.SignUpViewModel;
+import kr.co.zumo.app.lifeplus.view.model.bean.SignUpButtonBean;
 
 /**
  * SignUpButtonHolder
@@ -21,14 +24,22 @@ import kr.co.zumo.app.lifeplus.view.model.bean.TextBean;
  * @since 2018. 9. 12.
  */
 public class SignUpButtonHolder extends BaseViewHolder {
-  public SignUpButtonHolder(View itemView) {
+  SignUpButtonBinding signUpButtonBinding;
+
+  public SignUpButtonHolder(View itemView, SignUpButtonBinding signUpButtonBinding) {
     super(itemView);
+    this.signUpButtonBinding = signUpButtonBinding;
   }
 
   @Override
   void draw(SignUpItem item) {
-    TextBean bean = item.getBean(TextBean.class);
+    SignUpButtonBean bean = item.getBean(SignUpButtonBean.class);
     String text = bean.getText();
+    int buttonId = bean.getButtonId();
+
+    SignUpViewModel model = (SignUpViewModel) SuperModel.getInstance().getViewModel();
+    signUpButtonBinding.setModel(model);
+    signUpButtonBinding.setButtonId(buttonId);
 
     ((Button) itemView.findViewById(R.id.sign_up_button)).setText(text);
   }

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

@@ -24,11 +24,13 @@ import kr.co.zumo.app.lifeplus.supervisor.ScreenChangerHelper;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.view.fragment.FragmentBase;
 import kr.co.zumo.app.lifeplus.view.fragment.factory.BasicFragmentFactory;
+import kr.co.zumo.app.lifeplus.view.model.IViewModelEventListener;
 import kr.co.zumo.app.lifeplus.view.model.SignUpItem;
 import kr.co.zumo.app.lifeplus.view.model.SignUpViewModel;
 import kr.co.zumo.app.lifeplus.view.model.ViewModel;
 import kr.co.zumo.app.lifeplus.view.model.bean.SignUpBenefitBean;
 import kr.co.zumo.app.lifeplus.view.model.bean.SignUpBenefitListBean;
+import kr.co.zumo.app.lifeplus.view.model.bean.SignUpButtonBean;
 import kr.co.zumo.app.lifeplus.view.model.bean.SignUpTextWithTitleBean;
 import kr.co.zumo.app.lifeplus.view.model.bean.TextBean;
 
@@ -71,6 +73,12 @@ public class SignUpFragment extends FragmentBase {
     recyclerView.setAdapter(adapter);
 
     viewModel = signUpViewModel;
+    viewModel.setEventListener(new IViewModelEventListener<SignUpViewModel>() {
+      @Override
+      public void onEventFromViewModel(SignUpViewModel viewModel, int eventId, int intValue, @Nullable String stringValue) {
+
+      }
+    });
 
     // fixme for test
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_START, new TextBean(ResourceUtil.getString(R.string.sign_up_hello_text)).toJson()));
@@ -85,8 +93,9 @@ public class SignUpFragment extends FragmentBase {
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_START, new TextBean(ResourceUtil.getString(R.string.sign_up_need_id)).toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_END, new TextBean(ResourceUtil.getString(R.string.sign_up_mobile_confirm)).toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT_WITH_TITLE, SignUpItem.ALIGN_START, new SignUpTextWithTitleBean(ResourceUtil.getString(R.string.sign_up_id_confirm_completed), "김한화, 남\n1982.02.20\n010-1234-5678").toJson()));
-    signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_DIVIDER, new TextBean("간편암호 등록").toJson()));
+    signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_DIVIDER, new TextBean(ResourceUtil.getString(R.string.sign_up_input_pin)).toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_START, new TextBean(ResourceUtil.getString(R.string.sign_up_need_pin)).toJson()));
+    signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_BUTTON, SignUpItem.ALIGN_END, new SignUpButtonBean(ResourceUtil.getString(R.string.sign_up_input_pin), SignUpItem.BUTTON_ID_PIN).toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_END, new TextBean(ResourceUtil.getString(R.string.sign_up_pin_confirm)).toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_START, new TextBean(ResourceUtil.getString(R.string.sign_up_pin_confirm_completed)).toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_DIVIDER, new TextBean("약관동의").toJson()));
@@ -95,7 +104,6 @@ public class SignUpFragment extends FragmentBase {
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_DIVIDER, new TextBean("가입완료").toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TEXT, SignUpItem.ALIGN_START, new TextBean(ResourceUtil.getString(R.string.sign_up_completed, "한화")).toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_COIN, SignUpItem.ALIGN_START, new TextBean("가입 완료 코인 300c 지급 완료").toJson()));
-    signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_BUTTON, SignUpItem.ALIGN_CENTER, new TextBean("button").toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_TWO_BUTTON, SignUpItem.ALIGN_CENTER, new TextBean("two button").toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_NOTICE, SignUpItem.ALIGN_CENTER, new TextBean("SIGN_UP_NOTICE").toJson()));
     signUpViewModel.addItem(new SignUpItem(SignUpItem.SIGN_UP_WAITING, SignUpItem.ALIGN_CENTER, new TextBean("SIGN_UP_WAITING").toJson()));

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

@@ -29,9 +29,11 @@ public class SignUpItem {
   public static final int SIGN_UP_DIVIDER = 9;
   public static final int SIGN_UP_AGREE = 10;
 
-  public static final int ALIGN_START = 0;
-  public static final int ALIGN_CENTER = 1;
-  public static final int ALIGN_END = 2;
+  public static final int ALIGN_START = 100;
+  public static final int ALIGN_CENTER = 101;
+  public static final int ALIGN_END = 102;
+
+  public static final int BUTTON_ID_PIN = 1000;
 
   protected String jsonString;
   protected int itemType;

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

@@ -46,6 +46,13 @@ public class SignUpViewModel extends ViewModel {
       case Event.UNCHECK:
         Log.e("APP#  SignUpViewModel | onEvent", "|" + "uncheck");
         break;
+      case Event.CLICK:
+        if (intValue == SignUpItem.BUTTON_ID_PIN) {
+          // 핀 번호 입력 다이얼 로그 호출
+          Log.i("APP# SignUpViewModel | onEvent", "| eventId: " + eventId + ", intValue: " + intValue);
+
+        }
+        break;
       default:
         break;
     }

+ 11 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/model/bean/SignUpButtonBean.java

@@ -14,7 +14,17 @@ package kr.co.zumo.app.lifeplus.view.model.bean;
  * @since 2018. 9. 12.
  */
 public class SignUpButtonBean extends TextBean {
-  public SignUpButtonBean(String text) {
+
+  private final int buttonId;
+
+  public SignUpButtonBean(String text, int buttonId) {
     super(text);
+
+    this.buttonId = buttonId;
   }
+
+  public int getButtonId() {
+    return buttonId;
+  }
+
 }

+ 13 - 14
app/src/main/res/layout/sign_up_button.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<layout>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:tools="http://schemas.android.com/tools">
 
   <data>
 
@@ -9,19 +10,17 @@
       name="model"
       type="kr.co.zumo.app.lifeplus.view.model.ViewModel"/>
 
-  </data>
+    <variable
+      name="buttonId"
+      type="int"/>
 
-  <LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
+  </data>
 
-    <Button
-      android:id="@+id/sign_up_button"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:text="button"
-      android:onClick="@{()->model.onEvent(Event.POPUP)}"
-      />
-  </LinearLayout>
+  <Button
+    android:id="@+id/sign_up_button"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:onClick="@{()->model.onEvent(Event.CLICK, buttonId)}"
+    tools:text="button"
+    />
 </layout>

+ 22 - 27
app/src/main/res/layout/sign_up_divider.xml

@@ -1,37 +1,32 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
-  xmlns:tools="http://schemas.android.com/tools">
+  android:gravity="center"
+  android:orientation="horizontal">
 
-  <LinearLayout
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:gravity="center"
-    android:orientation="horizontal">
-
-    <View
-      android:layout_width="0dp"
-      android:layout_height="2dp"
-      android:layout_weight="1"
-      android:background="@color/colorPrimary"/>
+  <View
+    android:layout_width="0dp"
+    android:layout_height="2dp"
+    android:layout_weight="1"
+    android:background="@color/colorPrimary"/>
 
-    <TextView
-      android:id="@+id/divider_text"
-      android:layout_width="wrap_content"
-      android:layout_height="wrap_content"
-      android:layout_marginStart="10dp"
-      android:layout_marginEnd="10dp"
-      tools:text="texsdafasdfasdfasdfasdft"
-      android:textAlignment="center"
-      />
+  <TextView
+    android:id="@+id/divider_text"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginEnd="10dp"
+    android:layout_marginStart="10dp"
+    android:textAlignment="center"
+    tools:text="texsdafasdfasdfasdfasdft"
+    />
 
-    <View
-      android:layout_width="0dp"
-      android:layout_height="2dp"
-      android:layout_weight="1"
-      android:background="@color/colorPrimary"/>
+  <View
+    android:layout_width="0dp"
+    android:layout_height="2dp"
+    android:layout_weight="1"
+    android:background="@color/colorPrimary"/>
 
-  </LinearLayout>
 </LinearLayout>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -7,6 +7,7 @@
   <string name="sign_up_need_id">Lifeplus만의 혜택을 누리기 위해서는 본인인증 과정이 필요해요.</string>
   <string name="sign_up_need_pin">Lifeplus에서 사용할 간편암호를 등록해주세요.</string>
   <string name="sign_up_mobile_confirm">휴대폰 인증 완료</string>
+  <string name="sign_up_input_pin">간편암호 등록</string>
   <string name="sign_up_pin_confirm">간편암호 등록 완료</string>
   <string name="sign_up_id_confirm_completed">본인인증이 완료되었습니다.</string>
   <string name="sign_up_pin_confirm_completed">정상적으로 등록되었습니다.</string>