SelectFragmentDialog.java 6.77 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.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
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.adapter.SelectPracticeAdapter;
import com.naji.xiaotao.cookbook.adapter.SelectSizeAdapter;
import com.naji.xiaotao.cookbook.bean.CookbookDetailEntity;
import com.naji.xiaotao.cookbook.bean.CookbookPractice;
import com.naji.xiaotao.cookbook.bean.CookbookSize;
import com.naji.xiaotao.cookbook.listener.RvListener;

import java.util.ArrayList;
import java.util.List;

import me.goldze.mvvmhabit.utils.KLog;

public class SelectFragmentDialog extends DialogFragment{

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

    private List<CookbookPractice> practices=new ArrayList<>();//做法列表
    private List<CookbookSize> sizes=new ArrayList<>();//规格列表

    private RecyclerView pRecyclerView;//做法
    private RecyclerView sRecyclerView;//规格

    private SelectPracticeAdapter pAdapter;//做法
    private SelectSizeAdapter sAdapter;//适配器

    private String price;//选中价钱

    private onSureClickListener sureClickListener;

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


    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);
        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());
            price=entity.getSpec().get(0).getPrice();
        }else{
            priceTv.setText("¥"+entity.getPrice());
            price=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="";
                    for(CookbookSize cookbookSize:sizes){
                        if (cookbookSize.isSelected()){
                            specid=cookbookSize.getId();
                            spec=cookbookSize.getSpecs();
                            price=cookbookSize.getPrice();
                            break;
                        }
                    }
                    String practiceid="";
                    String practice="";
                    for(CookbookPractice cookbookPractice:practices){
                        if(cookbookPractice.isSelected()){
                            practiceid=cookbookPractice.getId();
                            practice=cookbookPractice.getName();
                        }
                    }
                    sureClickListener.onSureClick(specid,practiceid,spec,practice,price);
                }
            }
        });
        cookName.setText(entity.getTitleName());

        pRecyclerView=view.findViewById(R.id.practices);
        sRecyclerView=view.findViewById(R.id.sizes);

        if(entity.getSpec().size()>0){//规格
            sizes.addAll(entity.getSpec());
            sizes.get(0).setSelected(true);
            view.findViewById(R.id.size_layout).setVisibility(View.VISIBLE);
        }else{
            view.findViewById(R.id.size_layout).setVisibility(View.GONE);
        }
        sAdapter=new SelectSizeAdapter(getContext(), sizes, new RvListener() {
            @Override
            public void onItemClick(int id, int position) {
                for(int i=0;i<sizes.size();i++){
                    if (i==position){
                        sizes.get(i).setSelected(true);
                        priceTv.setText("¥"+sizes.get(i).getPrice());
                    }else{
                        sizes.get(i).setSelected(false);
                    }
                }
                sAdapter.notifyDataSetChanged();
            }
        });
        sRecyclerView.setLayoutManager(new GridLayoutManager(getContext(),3,GridLayoutManager.VERTICAL,false));
        sRecyclerView.setAdapter(sAdapter);
        if(entity.getPractice().size()>0){
            practices.addAll(entity.getPractice());
            practices.get(0).setSelected(true);
            view.findViewById(R.id.practice_layout).setVisibility(View.VISIBLE);
        }else{
            view.findViewById(R.id.practice_layout).setVisibility(View.GONE);
        }
        pAdapter=new SelectPracticeAdapter(getContext(), practices, new RvListener() {
            @Override
            public void onItemClick(int id, int position) {
                for(int i=0;i<practices.size();i++){
                    if (i==position){
                        practices.get(i).setSelected(true);
                    }else{
                        practices.get(i).setSelected(false);
                    }
                }
                pAdapter.notifyDataSetChanged();
            }
        });
        pRecyclerView.setLayoutManager(new GridLayoutManager(getContext(),3,GridLayoutManager.VERTICAL,false));
        pRecyclerView.setAdapter(pAdapter);
        return view;
    }

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