| | |
| | | package com.hdl.photovoltaic.widget; |
| | | |
| | | import android.annotation.SuppressLint; |
| | | import android.app.Dialog; |
| | | import android.content.Context; |
| | | import android.content.Intent; |
| | | import android.os.Bundle; |
| | | import android.text.TextUtils; |
| | | import android.view.View; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.recyclerview.widget.LinearLayoutManager; |
| | | |
| | | import com.hdl.photovoltaic.HDLApp; |
| | | import com.hdl.photovoltaic.R; |
| | | import com.hdl.photovoltaic.base.BaseDialog; |
| | | import com.hdl.photovoltaic.config.UserConfigManage; |
| | | import com.hdl.photovoltaic.databinding.DialogListBinding; |
| | | import com.hdl.photovoltaic.ui.StartActivity; |
| | | import com.hdl.photovoltaic.ui.adapter.LanguageAdapter; |
| | | import com.hdl.photovoltaic.utils.AppManagerUtils; |
| | | import com.hdl.photovoltaic.utils.LocalManageUtil; |
| | | import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter; |
| | | |
| | | public class ListDialog extends Dialog { |
| | | private onNoListener onNoOnclickListener; |
| | | private onHDLChinaListener onHDLChinaListener; |
| | | private onHDLBahrainListener onHDLBahrainListener; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 动态列表弹窗 |
| | | */ |
| | | public class ListDialog extends BaseDialog { |
| | | private DialogListBinding viewBinding; |
| | | private String contentStr1, contentStr2; |
| | | |
| | | private ListDialogAdapter listDialogAdapter; |
| | | private final Context mContext; |
| | | private List<LanguageAdapter.ItemData> list; |
| | | |
| | | private ListDialogAdapter.OnclickListener itemOnclickListener;//点击了的监听器 |
| | | |
| | | public ListDialog(@NonNull Context context) { |
| | | super(context, R.style.Custom_Dialog); |
| | | super(context, R.style.Custom_List_Dialog); |
| | | this.mContext = context; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | viewBinding = DialogListBinding.inflate(getLayoutInflater()); |
| | | setContentView(viewBinding.getRoot()); |
| | | setDialogTouchOutsideCloseable(this); |
| | | initData(); |
| | | initEvent(); |
| | | LinearLayoutManager linearLayout = new LinearLayoutManager(mContext); |
| | | listDialogAdapter = new ListDialogAdapter(this.list, mContext); |
| | | viewBinding.logicRcv.setLayoutManager(linearLayout); |
| | | viewBinding.logicRcv.setAdapter(listDialogAdapter); |
| | | listDialogAdapter.setItemOnclickListener(new ListDialogAdapter.OnclickListener() { |
| | | @Override |
| | | public void onClick(int position, LanguageAdapter.ItemData itemData) { |
| | | for (int i = 0; i < list.size(); i++) { |
| | | LanguageAdapter.ItemData data = list.get(i); |
| | | data.setState(false); |
| | | } |
| | | list.get(position).setState(true); |
| | | listDialogAdapter.notifyDataSetChanged(); |
| | | if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(itemData.getLanguage())) { |
| | | //同一个不执行弹窗 |
| | | return; |
| | | } |
| | | languageSelectionDialog(position, itemData); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 初始化界面控件的显示数据 |
| | | */ |
| | | public void setItemOnclickListener(ListDialogAdapter.OnclickListener onclickListener) { |
| | | this.itemOnclickListener = onclickListener; |
| | | } |
| | | |
| | | private void initData() { |
| | | //如果用户自定了contentStr1和contentStr2 |
| | | if (!TextUtils.isEmpty(contentStr1)) { |
| | | viewBinding.hdlChinaTv.setText(contentStr1); |
| | | } |
| | | if (!TextUtils.isEmpty(contentStr2)) { |
| | | viewBinding.hdlBahrainTv.setText(contentStr2); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 自定义"内容"文本 |
| | | * |
| | | * @param content 内容 |
| | | */ |
| | | public void setLineContent1(String content) { |
| | | if (TextUtils.isEmpty(content)) { |
| | | return; |
| | | } |
| | | contentStr1 = content; |
| | | if (viewBinding != null) { |
| | | viewBinding.hdlChinaTv.setText(contentStr1); |
| | | list = LocalManageUtil.getLanguageList(); |
| | | for (int i = 0; i < list.size(); i++) { |
| | | LanguageAdapter.ItemData itemData = list.get(i); |
| | | if (itemData.getLanguage().equals(UserConfigManage.getInstance().getCurrentAppLanguage())) { |
| | | //初始化之前状态 |
| | | itemData.setState(true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 自定义"内容"文本 |
| | | * 二次确认提示框 |
| | | * |
| | | * @param content 内容 |
| | | * @param position 索引值 |
| | | * @param itemData 选中数据 |
| | | */ |
| | | public void setLineContent2(String content) { |
| | | if (TextUtils.isEmpty(content)) { |
| | | return; |
| | | } |
| | | contentStr2 = content; |
| | | if (viewBinding != null) { |
| | | viewBinding.hdlBahrainTv.setText(contentStr2); |
| | | } |
| | | } |
| | | private void languageSelectionDialog(int position, LanguageAdapter.ItemData itemData) { |
| | | |
| | | public String geHDLChinaText() { |
| | | return viewBinding.hdlChinaTv.getText().toString(); |
| | | } |
| | | |
| | | ; |
| | | |
| | | public String getHDLBahrainText() { |
| | | return viewBinding.hdlBahrainTv.getText().toString(); |
| | | |
| | | } |
| | | |
| | | private void initEvent() { |
| | | |
| | | viewBinding.hdlCancelLl.setOnClickListener(new View.OnClickListener() { |
| | | ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this.mContext); |
| | | dialog.setTitle(this.mContext.getString(R.string.loading_title_tip)); |
| | | dialog.setContent(this.mContext.getString(R.string.loading_app_restart)); |
| | | dialog.show(); |
| | | dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (onNoOnclickListener != null) { |
| | | onNoOnclickListener.Cancel(); |
| | | public void Confirm() { |
| | | dialog.dismiss(); |
| | | if (itemOnclickListener != null) { |
| | | itemOnclickListener.onClick(position, itemData); |
| | | } |
| | | dismiss(); |
| | | } |
| | | }); |
| | | viewBinding.hdlChinaLl.setOnClickListener(new View.OnClickListener() { |
| | | dialog.setNoOnclickListener(new ConfirmationCancelDialog.onNoOnclickListener() { |
| | | @Override |
| | | public void Cancel() { |
| | | //取消之后还原之前状态 |
| | | for (int i = 0; i < list.size(); i++) { |
| | | LanguageAdapter.ItemData data = list.get(i); |
| | | data.setState(false); |
| | | if (UserConfigManage.getInstance().getCurrentAppLanguage().equals(data.getLanguage())) { |
| | | data.setState(true); |
| | | } |
| | | } |
| | | listDialogAdapter.notifyDataSetChanged(); |
| | | dialog.dismiss(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | @SuppressLint("ClickableViewAccessibility") |
| | | public void setDialogTouchOutsideCloseable(Dialog dialog) { |
| | | viewBinding.getRoot().setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (onHDLChinaListener != null) { |
| | | onHDLChinaListener.HDLChina(); |
| | | int top = viewBinding.dialogParent.getTop(); |
| | | int left = viewBinding.dialogParent.getLeft(); |
| | | int bottom = viewBinding.dialogParent.getBottom(); |
| | | int right = viewBinding.dialogParent.getRight(); |
| | | int y = (int) v.getY(); |
| | | int x = (int) v.getX(); |
| | | if (top < y && y < bottom) { |
| | | } else { |
| | | dismiss(); |
| | | } |
| | | if (left < x && x < right) { |
| | | |
| | | } else { |
| | | dismiss(); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | viewBinding.hdlBahrainLl.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (onHDLBahrainListener != null) { |
| | | onHDLBahrainListener.HDLBahrain(); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | |
| | | } |
| | | |
| | | public void setNoOnListener(onNoListener onclickListener) { |
| | | this.onNoOnclickListener = onclickListener; |
| | | } |
| | | |
| | | public void setOnHDLChinaOnListener(onHDLChinaListener onHDLChinaListener) { |
| | | this.onHDLChinaListener = onHDLChinaListener; |
| | | } |
| | | |
| | | public void setOnHDLBahrainListener(onHDLBahrainListener onHDLBahrainListener) { |
| | | this.onHDLBahrainListener = onHDLBahrainListener; |
| | | } |
| | | |
| | | public interface onNoListener { |
| | | void Cancel(); |
| | | } |
| | | |
| | | public interface onHDLChinaListener { |
| | | void HDLChina(); |
| | | } |
| | | |
| | | public interface onHDLBahrainListener { |
| | | void HDLBahrain(); |
| | | } |
| | | |
| | | } |