SelectFragmentDialog.java 8.11 KB
package com.naji.xiaotao.cookbook.dialog;


import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.naji.xiaotao.R;
import com.naji.xiaotao.cookbook.bean.CookbookDetailEntity;

import me.goldze.mvvmhabit.utils.KLog;

public class SelectFragmentDialog extends DialogFragment{

    private CookbookDetailEntity entity;
    private TextView cookName;
    private LinearLayout sizeLayout;
    private LinearLayout practiceLayout;
    private TextView priceTv;//价格
    private TextView sureBn;//确定


    private int selectedSizeIndex=0;
    private int selectedPracticeIndex=0;

    private onSureClickListener sureClickListener;

    public interface onSureClickListener{
        void onSureClick(String specid,String practiceid,String spec,String practice);
    }


    public void setOnSureClickListener(onSureClickListener sureClickListener){
        this.sureClickListener=sureClickListener;
    }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        entity= (CookbookDetailEntity) getArguments().getSerializable("cook");
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
        View view=inflater.inflate(R.layout.dialog_cookbook,container);
        cookName=view.findViewById(R.id.cook_name);
        sizeLayout=view.findViewById(R.id.sizes);
        practiceLayout=view.findViewById(R.id.practices);
        priceTv=view.findViewById(R.id.price);
        view.findViewById(R.id.close).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });
        if(entity.getSpec().size()>0){
            priceTv.setText("¥"+entity.getSpec().get(0).getPrice());
        }else{
            priceTv.setText("¥"+entity.getPrice());
        }
        sureBn=view.findViewById(R.id.sure);
        sureBn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getDialog().dismiss();
                if(sureClickListener!=null){
                    String specid="";
                    String spec="";
                    if(entity.getSpec().size()>0){
                        specid=entity.getSpec().get(selectedSizeIndex).getId();
                        spec=entity.getSpec().get(selectedSizeIndex).getSpecs();
                    }
                    String practiceid="";
                    String practice="";
                    if(entity.getPractice().size()>0){
                        practiceid=entity.getPractice().get(selectedPracticeIndex).getId();
                        practice=entity.getPractice().get(selectedPracticeIndex).getName();
                    }
                    sureClickListener.onSureClick(specid,practiceid,spec,practice);
                }
            }
        });
        cookName.setText(entity.getTitleName());
        LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        params.leftMargin= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,19,getResources().getDisplayMetrics());
        if(entity.getSpec().size()>0){
            for(int i=0;i<entity.getSpec().size();i++){
                final TextView tv= (TextView) inflater.inflate(R.layout.textview,null);
                tv.setText(entity.getSpec().get(i).getSpecs());
                tv.setTextColor(getResources().getColor(R.color.text1));
//                tv.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,6,getResources().getDisplayMetrics()));
                tv.setTag(String.valueOf(i));
                if(i==0){
                    tv.setBackgroundDrawable(getResources().getDrawable(R.drawable.bg_yidian));
                    tv.setTextColor(getResources().getColor(R.color.text3));
                }
                tv.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        for(int j=0;j<sizeLayout.getChildCount();j++){
                            TextView tv2= (TextView) sizeLayout.getChildAt(j);
                            if(Integer.parseInt((String) tv.getTag())==j){
                                selectedSizeIndex=j;
                                priceTv.setText("¥"+entity.getSpec().get(selectedSizeIndex).getPrice());
                                tv2.setBackgroundDrawable(getActivity().getResources().getDrawable(R.drawable.bg_yidian));
                                tv2.setTextColor(getResources().getColor(R.color.text3));
                            }else{
                                tv2.setBackgroundDrawable(getActivity().getResources().getDrawable(R.drawable.bg_unselected));
                                tv2.setTextColor(getResources().getColor(R.color.text1));
                            }
                        }
                    }
                });
                sizeLayout.addView(tv,params);
            }
            view.findViewById(R.id.size_layout).setVisibility(View.VISIBLE);
        }else{
            view.findViewById(R.id.size_layout).setVisibility(View.GONE);
        }
        if(entity.getPractice().size()>0){
            for(int i=0;i<entity.getPractice().size();i++){
                final TextView tv= (TextView) inflater.inflate(R.layout.textview,null);
                tv.setText(entity.getPractice().get(i).getName());
                tv.setTag(String.valueOf(i));
                tv.setTextColor(getResources().getColor(R.color.text1));
                //tv.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,14,getResources().getDisplayMetrics()));
                if(i==0){
                    tv.setBackgroundDrawable(getActivity().getResources().getDrawable(R.drawable.bg_yidian));
                    tv.setTextColor(getResources().getColor(R.color.text3));
                }
                tv.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        for(int j=0;j<practiceLayout.getChildCount();j++){
                            TextView tv2= (TextView) practiceLayout.getChildAt(j);
                            if(Integer.parseInt((String) tv.getTag())==j){
                                selectedPracticeIndex=j;
                                tv2.setBackgroundDrawable(getActivity().getResources().getDrawable(R.drawable.bg_yidian));
                                tv2.setTextColor(getResources().getColor(R.color.text3));
                            }else{
                                tv2.setBackgroundDrawable(getActivity().getResources().getDrawable(R.drawable.bg_unselected));
                                tv2.setTextColor(getResources().getColor(R.color.text1));
                            }
                        }
                    }
                });
                practiceLayout.addView(tv,params);
            }
            view.findViewById(R.id.practice_layout).setVisibility(View.VISIBLE);
        }else{
            view.findViewById(R.id.practice_layout).setVisibility(View.GONE);
        }
        return view;
    }

    @Override
    public void onStart() {
        super.onStart();
        getDialog().setCanceledOnTouchOutside(false);
        Window window=getDialog().getWindow();
        WindowManager.LayoutParams lp=window.getAttributes();
        DisplayMetrics dm=new DisplayMetrics();
        window.getWindowManager().getDefaultDisplay().getMetrics(dm);
        window.setLayout((int) (dm.widthPixels*0.9),ViewGroup.LayoutParams.WRAP_CONTENT);
    }
}