package com.sl.house_property; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.Gravity; import android.view.View; import com.google.gson.Gson; import com.google.gson.internal.LinkedTreeMap; import com.google.gson.reflect.TypeToken; import com.gyf.immersionbar.ImmersionBar; import com.selectpicker.OptionsPopupWindow; import com.sl.house_property.databinding.ActivityCodeBinding; import com.sl.house_property.discovery.ShareCodeActivity; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import entity.HomelistitemEntity; import entity.RegisterUser; import http.ApiConfig; import my_loader.Loader; import my_loader.Resultcode; import rx.Subscription; import rx.functions.Action1; import tools.Config; import utils.Md5; import utils.QRCodeUtil; public class CodeActivity extends BaseActivity { private String address; public ProgressDialog progressDialog; @Override protected int getLayoutResId() { return R.layout.activity_code; } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); ImmersionBar.with(this) .keyboardEnable(true) //解决软键盘与底部输入框冲突问题 // .keyboardEnable(true, WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE // | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE) //软键盘自动弹出 .init(); progressDialog = new ProgressDialog(this); progressDialog.setCanceledOnTouchOutside(false); mDataBinding.llAddress.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (list == null || list.isEmpty()) { Map map = new HashMap<>(); RegisterUser registerUser = Config.getInstance(CodeActivity.this).getUser(); if (registerUser != null) { map.put("userid", registerUser.getUserid()); } else { map.put("userid", 0 + ""); } map.put("sign", Md5.md5("Cas" + "GetMyAddress" + Md5.secret)); map.put("app", "Cas"); map.put("class", "GetMyAddress"); getGankList(ApiConfig.BASE_URL, map, "", 0); return; } final ArrayList strings = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { strings.add(list.get(i).getAddress()); } OptionsPopupWindow alarmOptionPop = new OptionsPopupWindow(CodeActivity.this); alarmOptionPop.setPicker(strings); alarmOptionPop.setOnoptionsSelectListener(new OptionsPopupWindow.OnOptionsSelectListener() { @Override public void onOptionsSelect(int position, int option2, int options3) { if (list.size() > 0) { user_home_id = list.get(position).getUser_home_id(); mDataBinding.tvAddress.setText(list.get(position).getAddress()); address = list.get(position).getAddress(); } } }); alarmOptionPop.showAtLocation(mDataBinding.getRoot(), Gravity.BOTTOM, 0, 0); } }); Map map = new HashMap<>(); RegisterUser registerUser = Config.getInstance(CodeActivity.this).getUser(); if (registerUser != null) { map.put("userid", registerUser.getUserid()); } else { map.put("userid", 0 + ""); } map.put("sign", Md5.md5("Cas" + "GetMyAddress" + Md5.secret)); map.put("app", "Cas"); map.put("class", "GetMyAddress"); getGankList(ApiConfig.BASE_URL, map, "", 0); getGankList(); mDataBinding.tvLs.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(CodeActivity.this, ShareCodeActivity.class); intent.putExtra("id", user_home_id); intent.putExtra("address", address); startActivity(intent); } }); mDataBinding.tvSx.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getGankList(); } }); mDataBinding.left.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } private void getGankList() { String myurl = ApiConfig.BASE_URL; String msg = getResources().getString(R.string.requsting); RegisterUser user = Config.getInstance(CodeActivity.this).getUser(); Map map = new HashMap<>(); if (user != null) { map.put("userid", user.getUserid()); } else { map.put("userid", 0 + ""); } map.put("app", "Door"); map.put("class", "GetownerCode"); map.put("user_home_id", "GetownerCode"); map.put("sign", Md5.md5("Door" + "GetownerCode" + Md5.secret)); Loader mGankLoader = new Loader(); progressDialog.show(); Subscription subscription = mGankLoader.getMovie(myurl, map).subscribe(new Action1() { @Override public void call(Resultcode resultcode) { progressDialog.dismiss(); if (resultcode.status == 0) { // setToast(0, resultcode.msg); Gson gs = new Gson(); LinkedTreeMap adta = (LinkedTreeMap) resultcode.data; String qrcode = (String) adta.get("qrcode"); Bitmap qrCodeBitmap = QRCodeUtil.createQRCodeBitmap(qrcode, QRCodeUtil.dip2px(CodeActivity.this, 200), QRCodeUtil.dip2px(CodeActivity.this, 200)); mDataBinding.ivCode.setImageBitmap(qrCodeBitmap); mDataBinding.ivCode.setVisibility(View.VISIBLE); } else { setToast(1, resultcode.msg); } } }, new Action1() { @Override public void call(Throwable throwable) { progressDialog.dismiss(); setToast(2, getString(R.string.getdatafailure)); throwable.printStackTrace(); } }); addSubscription(subscription); } private ArrayList list; private String user_home_id; private void getGankList(final String myurl, Map map, String string, final int getcode1) { progressDialog.setMessage(string); //map.put("") progressDialog.setCancelable(false); progressDialog.show(); mDataBinding.getRoot().postDelayed(new Runnable() { @Override public void run() { progressDialog.dismiss(); //setToast(1, getString(R.string.timeout)); } }, 13000); Loader mGankLoader = new Loader(); /* Map map=new HashMap(); map.put("phone");*/ Subscription subscription = mGankLoader.getMovie(myurl, map).subscribe(new Action1() { @Override public void call(Resultcode resultcode) { progressDialog.dismiss(); //setToast(0,resultcode.status); if ((!(resultcode.status == 0))) { setToast(1, resultcode.msg); return; } switch (getcode1) { case 0: Gson gs = new Gson(); LinkedTreeMap adta = (LinkedTreeMap) resultcode.data; String s = gs.toJson(adta); try { JSONObject jsonObject = new JSONObject(s); JSONArray jsonArray = jsonObject.getJSONArray("home"); Type type = new TypeToken>() { }.getType(); list = new Gson().fromJson(jsonArray.toString(), type); if (list != null && !list.isEmpty()) { mDataBinding.tvAddress.setText(list.get(0).getAddress()); user_home_id = list.get(0).getUser_home_id(); address = list.get(0).getAddress(); } } catch (JSONException e) { e.printStackTrace(); } break; } } }, new Action1() { @Override public void call(Throwable throwable) { progressDialog.dismiss(); setToast(2, getString(R.string.getdatafailure)); throwable.printStackTrace(); } }); addSubscription(subscription); } }