package licola.demo.com.huabandemo.Widget.MyDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import butterknife.ButterKnife; import licola.demo.com.huabandemo.API.Dialog.OnGatherDialogInteractionListener; import licola.demo.com.huabandemo.API.HttpsAPI.OperateAPI; import licola.demo.com.huabandemo.Base.BaseDialogFragment; import licola.demo.com.huabandemo.HttpUtils.RetrofitClient; import licola.demo.com.huabandemo.Module.ImageDetail.GatherInfoBean; import licola.demo.com.huabandemo.R; import licola.demo.com.huabandemo.Util.Constant; import licola.demo.com.huabandemo.Util.Logger; import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; /** * Created by LiCola on 2016/05/06 14:40 */ public class GatherDialogFragment extends BaseDialogFragment { private static final String KEYAUTHORIZATION = "keyAuthorization"; private static final String KEYVIAID = "keyViaId"; private static final String KEYDESCRIBE = "keyDescribe"; private static final String KEYBOARDTITLEARRAY = "keyBoardTitleArray"; EditText mEditTextDescribe; TextView mTVGatherWarning; Spinner mSpinnerBoardTitle; private Context mContext; private String mViaId; private String mDescribeText; private String[] mBoardTitleArray; private int mSelectPosition=0;//默认的选中项 OnGatherDialogInteractionListener mListener; @Override protected String getTAG() { return this.toString(); } @Override public void onAttach(Context context) { super.onAttach(context); mContext = context; if (context instanceof OnGatherDialogInteractionListener){ mListener= (OnGatherDialogInteractionListener) context; }else { throwRuntimeException(context); } } public static GatherDialogFragment create(String Authorization,String viaId, String describe, String[] boardTitleArray) { Bundle bundle = new Bundle(); bundle.putString(KEYAUTHORIZATION,Authorization); bundle.putString(KEYVIAID, viaId); bundle.putString(KEYDESCRIBE, describe); bundle.putStringArray(KEYBOARDTITLEARRAY, boardTitleArray); GatherDialogFragment fragment = new GatherDialogFragment(); fragment.setArguments(bundle); return fragment; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle args = getArguments(); if (args != null) { mAuthorization=args.getString(KEYAUTHORIZATION); mViaId = args.getString(KEYVIAID); mDescribeText = args.getString(KEYDESCRIBE); mBoardTitleArray = args.getStringArray(KEYBOARDTITLEARRAY); } } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Logger.d(TAG); AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setTitle(getString(R.string.dialog_title_gather)); LayoutInflater factory = LayoutInflater.from(mContext); final View dialogView = factory.inflate(R.layout.dialog_gather, null); initView(dialogView); builder.setView(dialogView); builder.setNegativeButton(R.string.dialog_negative,null); builder.setPositiveButton(R.string.dialog_gather_positive, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Logger.d(); //取出输入字符串 没有输入用hint文本作为默认值 String input=mEditTextDescribe.getText().toString(); if (TextUtils.isEmpty(input)){ input=mEditTextDescribe.getHint().toString(); } mListener.onDialogPositiveClick(input,mSelectPosition); } }); addSubscription(getGatherInfo()); return builder.create(); } //可能需要保存数据的回调 一般是按下Home键 @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Logger.d(); } //取消的回调 @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); Logger.d(dialog.toString()); } private void initView(View dialogView) { mEditTextDescribe = ButterKnife.findById(dialogView, R.id.edit_describe); mTVGatherWarning = ButterKnife.findById(dialogView, R.id.tv_gather_warning); mSpinnerBoardTitle = ButterKnife.findById(dialogView, R.id.spinner_title); ArrayAdapter<String> adapter = new ArrayAdapter<>(mContext, R.layout.support_simple_spinner_dropdown_item, mBoardTitleArray); if (!TextUtils.isEmpty(mDescribeText)) { mEditTextDescribe.setHint(mDescribeText); }else { mEditTextDescribe.setHint(R.string.text_image_describe_null); } mSpinnerBoardTitle.setAdapter(adapter); mSpinnerBoardTitle.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Logger.d("position="+position); mSelectPosition=position; } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } public Subscription getGatherInfo() { return RetrofitClient.createService(OperateAPI.class) .httpsGatherInfo(mAuthorization, mViaId, Constant.OPERATECHECK) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<GatherInfoBean>() { @Override public void onCompleted() { Logger.d(); } @Override public void onError(Throwable e) { Logger.d(e.toString()); } @Override public void onNext(GatherInfoBean gatherInfoBean) { Logger.d("this pin exist =" + (gatherInfoBean.getExist_pin() != null)); if (gatherInfoBean.getExist_pin()!=null){ String formatWarning = getResources().getString(R.string.text_gather_warning); mTVGatherWarning.setVisibility(View.VISIBLE); mTVGatherWarning.setText(String.format(formatWarning, gatherInfoBean.getExist_pin().getBoard().getTitle())); } } }); } }