| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package eVVM.apk.helper.basepicker;
- import android.app.Dialog;
- import android.content.Context;
- import android.text.TextUtils;
- import android.view.Gravity;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.TextView;
- import java.util.ArrayList;
- import java.util.List;
- import eVVM.apk.R;
- /**
- * Created by Android Studio.
- * User: zbb
- * Date: 2019/6/4
- * Describe: DataPickerDialog
- */
- public class DataPickerDialog extends Dialog {
- private Params params;
- public DataPickerDialog(Context context, int themeResId) {
- super(context, themeResId);
- }
- private void setParams(DataPickerDialog.Params params) {
- this.params = params;
- }
- public void setSelection(String itemValue) {
- if (params.dataList.size() > 0) {
- int idx = params.dataList.indexOf(itemValue);
- if (idx >= 0) {
- params.initSelection = idx;
- params.loopData.setCurrentItem(params.initSelection);
- }
- }
- }
- public interface OnDataSelectedListener {
- void onDataSelected(String itemValue);
- }
- private static final class Params {
- private boolean shadow = true;
- private boolean canCancel = true;
- private LoopMsgView loopData;
- private String title;
- private String unit;
- private int initSelection;
- private OnDataSelectedListener callback;
- private final List<String> dataList = new ArrayList<>();
- }
- public static class Builder {
- private final Context context;
- private final DataPickerDialog.Params params;
- public Builder(Context context) {
- this.context = context;
- params = new DataPickerDialog.Params();
- }
- private final String getCurrDateValue() {
- return params.loopData.getCurrentItemValue();
- }
- public Builder setData(List<String> dataList) {
- params.dataList.clear();
- params.dataList.addAll(dataList);
- return this;
- }
- public Builder setTitle(String title) {
- params.title = title;
- return this;
- }
- public Builder setUnit(String unit) {
- params.unit = unit;
- return this;
- }
- public Builder setSelection(int selection) {
- params.initSelection = selection;
- return this;
- }
- public Builder setOnDataSelectedListener(OnDataSelectedListener onDataSelectedListener) {
- params.callback = onDataSelectedListener;
- return this;
- }
- public DataPickerDialog create() {
- final DataPickerDialog dialog = new DataPickerDialog(context, params.shadow ? R.style.Theme_Light_NoTitle_Dialog : R.style.Theme_Light_NoTitle_NoShadow_Dialog);
- View view = LayoutInflater.from(context).inflate(R.layout.layout_picker_data, null);
- if (!TextUtils.isEmpty(params.title)) {
- TextView txTitle = (TextView) view.findViewById(R.id.tx_title);
- txTitle.setText(params.title);
- }
- if (!TextUtils.isEmpty(params.unit)) {
- TextView txUnit = (TextView) view.findViewById(R.id.tx_unit);
- txUnit.setText(params.unit);
- }
- final LoopMsgView loopData = (LoopMsgView) view.findViewById(R.id.loop_data);
- loopData.setArrayList(params.dataList);
- loopData.setNotLoop();
- if (params.dataList.size() > 0) loopData.setCurrentItem(params.initSelection);
- view.findViewById(R.id.tx_finish).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- dialog.dismiss();
- params.callback.onDataSelected(getCurrDateValue());
- }
- });
- Window win = dialog.getWindow();
- win.getDecorView().setPadding(0, 0, 0, 0);
- WindowManager.LayoutParams lp = win.getAttributes();
- lp.width = WindowManager.LayoutParams.MATCH_PARENT;
- lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
- win.setAttributes(lp);
- win.setGravity(Gravity.BOTTOM);
- win.setWindowAnimations(R.style.Animation_Bottom_Rising);
- dialog.setContentView(view);
- dialog.setCanceledOnTouchOutside(params.canCancel);
- dialog.setCancelable(params.canCancel);
- params.loopData = loopData;
- dialog.setParams(params);
- return dialog;
- }
- }
- }
|