package com.sogou.fastomiai; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; import com.android.volley.Response; import com.android.volley.VolleyError; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.annotations.SerializedName; import com.sogou.fastomiai.controller.SessionManager; import com.sogou.fastomiai.model.InviteItemInfo.SexEnum; import com.sogou.fastomiai.model.UserSuppInfo; import com.sogou.fastomiai.util.Constants; import com.sogou.fastomiai.util.NetworkRequest; import com.sogou.fastomiai.util.NetworkUtil; public class FillInfoActivity extends FragmentActivity { private ImageButton mBtnBack = null; private TextView mTextTitle = null; private Button mBtnNext = null; private FragmentManager fragmentManager = null; private FillBaseInfoFragment mTab01; private FillPhotoFragment mTab02; private FillDesireFragment mTab03; private int mIndex = 0; private UserSupplementInfo mUserSupplementInfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fill_info); mUserSupplementInfo = new UserSupplementInfo(); mBtnBack = (ImageButton) findViewById(R.id.btn_login_back); mBtnBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mBtnNext.setText(getResources().getString(R.string.fill_info_next)); if (1 == mIndex) { mBtnBack.setVisibility(View.INVISIBLE); } setTabSelection(mIndex - 1); } }); mTextTitle = (TextView) findViewById(R.id.text_fill_info_title); mBtnNext = (Button) findViewById(R.id.btn_next); mBtnNext.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { switch (mIndex) { case 1: // if (mTab02 != null && !mTab02.isFilled()) { // Toast.makeText(getApplicationContext(), "请上传照片", // Toast.LENGTH_SHORT).show(); // return; // } mBtnNext.setText(getResources().getString( R.string.fill_info_finish)); mBtnBack.setVisibility(View.VISIBLE); setTabSelection(mIndex + 1); break; case 0: if (mTab01 != null && !mTab01.isFilled()) { Toast.makeText(getApplicationContext(), "请补全资料", Toast.LENGTH_SHORT).show(); return; } mBtnBack.setVisibility(View.VISIBLE); setTabSelection(mIndex + 1); break; case 2: commitUserInfo(); break; default: break; } } }); fragmentManager = getSupportFragmentManager(); setTabSelection(mIndex); } void commitUserInfo() { mTab01.fillInfo(mUserSupplementInfo); mTab02.fillInfo(mUserSupplementInfo); mTab03.fillInfo(mUserSupplementInfo); String token = SessionManager.getInstance(getApplicationContext()).getToken(); Map<String, String> params = new HashMap<String, String>(); params.put(Constants.TOKEN, token); String url = NetworkUtil.getUrl(Constants.USER_SUPP_URL, params); params = mUserSupplementInfo.toKeyValue(); NetworkRequest.post(url, params, UserSuppInfo.class, new Response.Listener<UserSuppInfo>() { @Override public void onResponse(UserSuppInfo suppInfo) { if (suppInfo != null && suppInfo.isSuccess()) { Toast.makeText(getApplicationContext(), "提交成功", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getApplicationContext(), BrowseActivity.class); startActivity(intent); finish(); } else { if (suppInfo != null && suppInfo.errmsg != null) { Toast.makeText(getApplicationContext(), suppInfo.errmsg, Toast.LENGTH_SHORT) .show(); } else { Toast.makeText(getApplicationContext(), "提交失败", Toast.LENGTH_SHORT).show(); } } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(getApplicationContext(), "提交失败", Toast.LENGTH_SHORT).show(); } }); } void setTabSelection(int index) { if (0 > index || 2 < index) { return; } mIndex = index; mTextTitle.setText(getResources().getString(R.string.fill_info_title) + "(" + (mIndex + 1) + "/3)"); FragmentTransaction transaction = fragmentManager.beginTransaction(); hideFragments(transaction); switch (index) { case 0: if (null == mTab01) { mTab01 = new FillBaseInfoFragment(); transaction.add(R.id.fragment_container, mTab01); } else { transaction.show(mTab01); } break; case 1: if (null == mTab02) { mTab02 = new FillPhotoFragment(); transaction.add(R.id.fragment_container, mTab02); } else { transaction.show(mTab02); } break; case 2: if (null == mTab03) { mTab03 = new FillDesireFragment(); transaction.add(R.id.fragment_container, mTab03); } else { transaction.show(mTab03); } break; default: break; } transaction.commit(); } private void hideFragments(FragmentTransaction transaction) { if (null != mTab01) { transaction.hide(mTab01); } if (null != mTab02) { transaction.hide(mTab02); } if (null != mTab03) { transaction.hide(mTab03); } } public static class UserSupplementInfo { @SerializedName("name") public String name; @SerializedName("sex") public SexEnum sex; @SerializedName("birth") public int age; @SerializedName("height") public int height = 0; @SerializedName("income") public IncomeEnum income; @SerializedName("is_car") public ZeroOrOneEnum hasCar; @SerializedName("is_house") public ZeroOrOneEnum hasHouse; @SerializedName("edu") public EducationEnum edu; @SerializedName("level") public LevelEnum level; @SerializedName("marriage") public MarriageEnum marriage; @SerializedName("photo") public ArrayList<FileItem> photo = null; @SerializedName("vedio") public ArrayList<FileItem> vedio = null; public Map<String, String> toKeyValue() { Map<String, String> mapInfo = new HashMap<String, String>(); Gson builder = new GsonBuilder().create(); mapInfo.put("name", name); mapInfo.put("sex", sex.toString()); mapInfo.put("birth", String.valueOf(age)); mapInfo.put("height", String.valueOf(height)); mapInfo.put("income", income.toString()); mapInfo.put("is_car", hasCar.toString()); mapInfo.put("is_house", hasHouse.toString()); mapInfo.put("edu", edu.toString()); mapInfo.put("level", level.toString()); mapInfo.put("marriage", marriage.toString()); mapInfo.put("photo", builder.toJson(photo)); mapInfo.put("vedio", builder.toJson(vedio)); return mapInfo; } } public static enum IncomeEnum { @SerializedName("1") INCOME_BELOW_2K, @SerializedName("2") INCOME_2K_TO_5K, @SerializedName("3") INCOME_5K_TO_1W, @SerializedName("4") INCOME_1W_TO_2W, @SerializedName("5") INCOME_ABOVE_2W; @Override public String toString() { return String.valueOf(ordinal() + 1); } } public static enum ZeroOrOneEnum { @SerializedName("0") ENUM_ZERO, @SerializedName("1") ENUM_ONE; @Override public String toString() { return String.valueOf(ordinal()); } } public static enum EducationEnum { @SerializedName("1") EDU_HIGH_SCHOOL, @SerializedName("2") EDU_JUNIOR_COLLEGE, @SerializedName("3") EDU_BACHELOR, @SerializedName("4") EDU_MASTER, @SerializedName("5") EDU_PHD; @Override public String toString() { return String.valueOf(ordinal() + 1); } } public static enum LevelEnum { @SerializedName("1") LEVEL_1, @SerializedName("2") LEVEL_2, @SerializedName("3") LEVEL_3, @SerializedName("4") LEVEL_4, @SerializedName("5") LEVEL_5; @Override public String toString() { return String.valueOf(ordinal() + 1); } } public static enum MarriageEnum { @SerializedName("1") UNMARRIED, @SerializedName("2") DIVORCE, @SerializedName("3") WIDOWED; @Override public String toString() { return String.valueOf(ordinal() + 1); } } public static class FileItem { @SerializedName("name") public String name = null; @SerializedName("file") public String file = null; } }