package com.hdl.photovoltaic.widget; 
 | 
  
 | 
import android.annotation.SuppressLint; 
 | 
import android.app.Dialog; 
 | 
import android.content.Context; 
 | 
import android.os.Bundle; 
 | 
import android.view.Gravity; 
 | 
import android.view.View; 
 | 
import android.view.ViewGroup; 
 | 
import android.view.Window; 
 | 
import android.view.WindowManager; 
 | 
  
 | 
import androidx.annotation.NonNull; 
 | 
import androidx.recyclerview.widget.LinearLayoutManager; 
 | 
  
 | 
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.adapter.LanguageAdapter; 
 | 
import com.hdl.photovoltaic.utils.LocalManageUtil; 
 | 
import com.hdl.photovoltaic.utils.UnitConversionUtils; 
 | 
import com.hdl.photovoltaic.widget.adapter.ListDialogAdapter; 
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
  
 | 
/** 
 | 
 * 动态列表弹窗 
 | 
 */ 
 | 
public class ListDialog extends BaseDialog { 
 | 
    private DialogListBinding viewBinding; 
 | 
  
 | 
    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_List_Dialog); 
 | 
        this.mContext = context; 
 | 
    } 
 | 
  
 | 
  
 | 
    @Override 
 | 
    protected void onCreate(Bundle savedInstanceState) { 
 | 
        super.onCreate(savedInstanceState); 
 | 
  
 | 
        Window window = getWindow(); 
 | 
        if (window != null) { 
 | 
            window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
 | 
            WindowManager.LayoutParams layoutParams = window.getAttributes(); 
 | 
            layoutParams.gravity = Gravity.START | Gravity.TOP; 
 | 
            layoutParams.width = (int) UnitConversionUtils.dpToPx(mContext, 140); 
 | 
            layoutParams.x = (int) UnitConversionUtils.dpToPx(mContext, 20); 
 | 
            layoutParams.y = (int) UnitConversionUtils.dpToPx(mContext, 99); 
 | 
            window.setAttributes(layoutParams); 
 | 
        } 
 | 
  
 | 
        viewBinding = DialogListBinding.inflate(getLayoutInflater()); 
 | 
        setContentView(viewBinding.getRoot()); 
 | 
        initData(); 
 | 
        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() { 
 | 
        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 position 索引值 
 | 
     * @param itemData 选中数据 
 | 
     */ 
 | 
    private void languageSelectionDialog(int position, LanguageAdapter.ItemData itemData) { 
 | 
  
 | 
        ConfirmationCancelDialog dialog = new ConfirmationCancelDialog(this.mContext); 
 | 
        dialog.setContent(this.mContext.getString(R.string.loading_app_restart)); 
 | 
        dialog.show(); 
 | 
        dialog.isHideTitle(true); 
 | 
        dialog.setYesOnclickListener(new ConfirmationCancelDialog.onYesOnclickListener() { 
 | 
            @Override 
 | 
            public void Confirm() { 
 | 
                dialog.dismiss(); 
 | 
                if (itemOnclickListener != null) { 
 | 
                    itemOnclickListener.onClick(position, itemData); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
        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(); 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |