全选反选,查询时全选反选bug

package com.omniteaching.otscale.ui.formulaC;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.omniteaching.otscale.R;
import com.omniteaching.otscale.database.formulaC.bll.FormulaCDbManager;
import com.omniteaching.otscale.database.formulaC.bll.FormulaCHisDbManager;
import com.omniteaching.otscale.model.formulaC.FormulaMutilDetailsInfo;
import com.omniteaching.otscale.model.formulaC.FormulaMutilHisRecInfo;
import com.omniteaching.otscale.model.formulaC.FormulaMutilInvoiceInfo;
import com.omniteaching.otscale.system.formula.FormulaConvertUtils;
import com.omniteaching.otscale.system.formula.FormulaMutilHttpManager;
import com.omniteaching.otscale.system.formulaC.FormulaMutilManager;
import com.omniteaching.otscale.system.formulaC.FormulaMutilProcessManager;
import com.omniteaching.otscale.system.scale.utils.WeightFormat;
import com.omniteaching.otscale.system.scale.utils.WifiUtil;
import com.omniteaching.otscale.ui.formula.http.FormulaOkHttpListener;
import com.omniteaching.otscale.ui.formula.http.IUploadMultipleListener;
import com.omniteaching.otscale.ui.formula.model.FormulaMulitTasks;
import com.omniteaching.otscale.ui.formula.model.FormulaMutilUpDetailTasks;
import com.omniteaching.otscale.ui.formula.model.LoginFailInfo;
import com.omniteaching.otscale.ui.formula.model.LoginInfo;
import com.omniteaching.otscale.ui.version.formula.FormulaLoginDialog;
import com.omniteaching.otscale.ui.version.formula.OnLoadingListener;
import com.omniteaching.otscale.utils.BaseFragment;
import com.omniteaching.otscale.utils.BaseWaitingDialog;
import com.omniteaching.otscale.utils.BtnClickUtils;
import com.omniteaching.otscale.utils.Constants;
import com.omniteaching.otscale.utils.ConvertUtils;
import com.omniteaching.otscale.utils.DateTimeUtils;
import com.omniteaching.otscale.utils.Globals;
import com.omniteaching.otscale.utils.SimpleStyleDialog;
import com.omniteaching.otscale.utils.config.LoginManager;
import com.omniteaching.scaledata.model.UnitMgr;
import com.squareup.okhttp.Request;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import de.greenrobot.event.EventBus;

/**
 * 物料管理片段
 * Created by KXwon on 2016/3/17.
 */
public class FormulaManagerMutipleFragment extends BaseFragment implements View.OnClickListener
{
    private static final String TAG = FormulaManagerMutipleFragment.class.getSimpleName();

    private View mRootView;
    private TextView mTvUpload;
    private TextView mSelectText;
    private EditText mSearchEditText;
    private ListView mFormulaManagerListView;

    private Map<String, Boolean> mCheckedMap;
    private Map<String, FormulaMutilUpDetailTasks> mFormulaShowMap;
    private Map<String, FormulaMutilUpDetailTasks> mSelectMap;
    private LinkedHashMap<String, FormulaMutilUpDetailTasks> mAllUpselcetMap;

    private BtnClickUtils mBtnClickUtils;
    private FormulaManagerAdapter mFormulaManagerAdapter;

    private BaseWaitingDialog mWaitDialog;

    private int mSelectAmount;
    private boolean mIsSelectAll;

    private FormulaCDbManager mFormulaCDbManager;
    private FormulaCHisDbManager mFormulaCHisDbManager;
    private List<FormulaMutilUpDetailTasks> mMutilShowDetailTaskses;
    private ArrayList<FormulaMutilInvoiceInfo> mMutilUpDetailTaskses;
    private FormulaLoginDialog mFormulaLoginDialog;
    private DecimalFormat mDecimalFormat;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        mRootView = inflater.inflate(R.layout.layout_formula_manager, null);
        loadView();
        initArgument();
        initListener();
        return mRootView;
    }

    private void initArgument()
    {
        mFormulaCDbManager = FormulaCDbManager.getInstance(getActivity());
        mFormulaCHisDbManager = FormulaCHisDbManager.getInstance(getActivity());
        mFormulaShowMap = new LinkedHashMap<String, FormulaMutilUpDetailTasks>();
        mSelectMap = new LinkedHashMap<String, FormulaMutilUpDetailTasks>();
        mAllUpselcetMap = new LinkedHashMap<String, FormulaMutilUpDetailTasks>();
        mCheckedMap = new LinkedHashMap<String, Boolean>();
        mFormulaManagerAdapter = new FormulaManagerAdapter();
        mDecimalFormat = new DecimalFormat();
        mFormulaManagerListView.setAdapter(mFormulaManagerAdapter);
        mMutilShowDetailTaskses = new ArrayList<FormulaMutilUpDetailTasks>();
        mMutilUpDetailTaskses = new ArrayList<FormulaMutilInvoiceInfo>();
        resetData();
        mBtnClickUtils = new BtnClickUtils();


    }

    public void resetData()
    {
        mFormulaShowMap.clear();
        mMutilShowDetailTaskses.clear();
        List<FormulaMutilDetailsInfo> formulaInvoiceInfos = mFormulaCDbManager.queryAll();
        if (formulaInvoiceInfos != null)
        {
            for (FormulaMutilDetailsInfo formulaInvoiceInfo : formulaInvoiceInfos)
            {
                FormulaMutilUpDetailTasks formulaMutilUpTasks = new FormulaMutilUpDetailTasks();
                float weight = 0;
                int unitid = FormulaMutilManager.DEFAULT_UNITID;
                String unitName;
                int decimalsNum = 0;
                List<FormulaMutilHisRecInfo> formulaMutilHisRecInfos = mFormulaCHisDbManager.queryByID(formulaInvoiceInfo.getID());
                if (formulaMutilHisRecInfos != null)
                {
                    FormulaConvertUtils.convertMultiep(getActivity(), formulaMutilHisRecInfos);
                    for (FormulaMutilHisRecInfo formulaMutilHisRecInfo : formulaMutilHisRecInfos)
                    {
                        weight += formulaMutilHisRecInfo.getWeight();
                        log("0 inputString weight :"+ weight);
                    }
                } else
                {
                    weight = 0;
                }
                if (formulaMutilHisRecInfos != null)
                    if (formulaMutilHisRecInfos.get(0) != null)
                    {
//                        unitid = formulaMutilHisRecInfos.get(0).getUnitId();
                        decimalsNum = formulaMutilHisRecInfos.get(0).getDecimalsNum();
                        WeightFormat.updateFormat(mDecimalFormat,decimalsNum);
                    }
                log("1 inputString weight :"+ weight);
                unitName = UnitMgr.getUnitName(unitid);
                formulaMutilUpTasks.setUnit(unitName);
                formulaMutilUpTasks.setTileName(formulaInvoiceInfo.getMaterialTitle());
                formulaMutilUpTasks.setDevice(formulaInvoiceInfo.getDevice());
                formulaMutilUpTasks.setFinishWeight(mDecimalFormat.format(weight));
                formulaMutilUpTasks.setRecipeID(formulaInvoiceInfo.getRecipeID());
                formulaMutilUpTasks.setDone(formulaInvoiceInfo.isDone());
                formulaMutilUpTasks.setID(formulaInvoiceInfo.getID());
                formulaMutilUpTasks.setStandWeight(formulaInvoiceInfo.getWeight()+"");
                formulaMutilUpTasks.setDeviationWeight(formulaInvoiceInfo.getDeviationWeight());
                formulaMutilUpTasks.setDecimalsNum(decimalsNum);
                formulaMutilUpTasks.setDeviationWeight(formulaInvoiceInfo.getDeviationWeight());
                mMutilShowDetailTaskses.add(formulaMutilUpTasks);
            }

            for (FormulaMutilUpDetailTasks mutilUpDetailTaskse : mMutilShowDetailTaskses)
            {
                if (null != mCheckedMap.get(mutilUpDetailTaskse.getDevice()) && mCheckedMap.get
                        (mutilUpDetailTaskse.getDevice()))
                {
                    mCheckedMap.put(mutilUpDetailTaskse.getDevice(), true);
                    mFormulaShowMap.put(mutilUpDetailTaskse.getDevice(), mutilUpDetailTaskse);
                } else
                {
                    mCheckedMap.put(mutilUpDetailTaskse.getDevice(), false);
                    mFormulaShowMap.remove(mutilUpDetailTaskse.getDevice());
                }
            }
        }
        mFormulaManagerAdapter.setData(mMutilShowDetailTaskses);
        mFormulaManagerAdapter.notifyDataSetChanged();
        log("mFormulaShowMap " + mFormulaShowMap.size() + "|| " + mFormulaManagerAdapter.getFormulaManagementList().size());
        if ((mFormulaShowMap.size() != 0 && mFormulaShowMap.size() == mFormulaManagerAdapter.getFormulaManagementList().size()))
        {
            mIsSelectAll = true;
            mSelectText.setText(getResourcesString(R.string.select_none));
        } else
        {
            mIsSelectAll = false;
            mSelectText.setText(getResourcesString(R.string.select_all));
        }

    }

    private void initListener()
    {
        mTvUpload.setOnClickListener(this);
//        mFormulaManagerListView.setOnItemLongClickListener(this);
        mSearchEditText.setOnTouchListener(new View.OnTouchListener()
        {
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                switch (event.getAction())
                {
                    case MotionEvent.ACTION_DOWN:
                        mSearchEditText.setTextColor(getResourcesColor(R.color.white));
                        mSearchEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
                                getResourcesDrawable(R.drawable.search_white), null);
                        mSearchEditText.setHint("  ");
                        break;
                }

                return false;
            }
        });
//
//
//        if (mIsSelectAll)
//        {
//            mSelectText.setText(getResourcesString(R.string.select_none));
//        } else
//        {
//            mSelectText.setText(getResourcesString(R.string.select_all));
//        }

        mSearchEditText.addTextChangedListener(new TextWatcher()
        {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after)
            {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count)
            {


            }

            @Override
            public void afterTextChanged(Editable s)
            {
                if (s.length() != 0)
                {
                    mSearchEditText.setTextColor(getResourcesColor(R.color.white));
                    mSearchEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
                            getResourcesDrawable(R.drawable.search_white), null);
                    mSelectMap.clear();
                    mMutilShowDetailTaskses.clear();
                    List<FormulaMutilDetailsInfo> formulaMutilDetailsInfos = mFormulaCDbManager.queryFuzzy(s.toString().trim());
                    if (formulaMutilDetailsInfos != null)
                    {
                        for (FormulaMutilDetailsInfo formulaInvoiceInfo : formulaMutilDetailsInfos)
                        {
                            FormulaMutilUpDetailTasks formulaMutilUpTasks = new FormulaMutilUpDetailTasks();
                            float weight = 0;
                            int unitid = FormulaMutilManager.DEFAULT_UNITID;
                            String unitName;
                            int decimalsNum =0;
                            List<FormulaMutilHisRecInfo> formulaMutilHisRecInfos = mFormulaCHisDbManager.queryByID(formulaInvoiceInfo.getID());
                            if (formulaMutilHisRecInfos != null)
                            {
                                FormulaConvertUtils.convertMultiep(getActivity(), formulaMutilHisRecInfos);
                                for (FormulaMutilHisRecInfo formulaMutilHisRecInfo : formulaMutilHisRecInfos)
                                {
                                    weight += formulaMutilHisRecInfo.getWeight();
                                }
                            } else
                            {
                                weight = 0;
                            }
                            if (formulaMutilHisRecInfos != null)
                                if (formulaMutilHisRecInfos.get(0) != null)
                                {
                                    decimalsNum = formulaMutilHisRecInfos.get(0).getDecimalsNum();

//                                    unitid = formulaMutilHisRecInfos.get(0).getUnitId();
                                    WeightFormat.updateFormat(mDecimalFormat, formulaMutilHisRecInfos.get(0).getDecimalsNum());
                                }

                            unitName = UnitMgr.getUnitName(unitid);
                            formulaMutilUpTasks.setUnit(unitName);
                            formulaMutilUpTasks.setTileName(formulaInvoiceInfo.getMaterialTitle());
                            formulaMutilUpTasks.setDevice(formulaInvoiceInfo.getDevice());
                            formulaMutilUpTasks.setFinishWeight(mDecimalFormat.format(weight));
                            formulaMutilUpTasks.setRecipeID(formulaInvoiceInfo.getRecipeID());
                            formulaMutilUpTasks.setDone(formulaInvoiceInfo.isDone());
                            formulaMutilUpTasks.setID(formulaInvoiceInfo.getID());
                            formulaMutilUpTasks.setStandWeight(formulaInvoiceInfo.getWeight()+"");
                            formulaMutilUpTasks.setDeviationWeight(formulaInvoiceInfo.getDeviationWeight());
                            formulaMutilUpTasks.setDecimalsNum(decimalsNum);
                            formulaMutilUpTasks.setDeviationWeight(formulaInvoiceInfo.getDeviationWeight());
                            mMutilShowDetailTaskses.add(formulaMutilUpTasks);
                            for (FormulaMutilUpDetailTasks mutilUpDetailTaskse : mMutilShowDetailTaskses)
                            {
                                if (null != mCheckedMap.get(mutilUpDetailTaskse.getDevice()) && mCheckedMap.get
                                        (mutilUpDetailTaskse.getDevice()))
                                {
                                    mCheckedMap.put(mutilUpDetailTaskse.getDevice(), true);
                                    mSelectMap.put(mutilUpDetailTaskse.getDevice(), mutilUpDetailTaskse);
                                } else
                                {
                                    mCheckedMap.put(mutilUpDetailTaskse.getDevice(), false);
                                    mSelectMap.remove(mutilUpDetailTaskse.getDevice());
                                }
                            }
                        }
                    }
                    mFormulaManagerAdapter.setData(mMutilShowDetailTaskses);
                    mFormulaManagerAdapter.notifyDataSetChanged();
                    if (mSelectMap.size() != 0 && mSelectMap.size() == mFormulaManagerAdapter.getFormulaManagementList().size())
                    {
                        mIsSelectAll = true;
                        mSelectText.setText(getResourcesString(R.string.select_none));
                    } else
                    {
                        mIsSelectAll = false;
                        mSelectText.setText(getResourcesString(R.string.select_all));
                    }
                } else
                {
                    setSearch();
                }
            }
        });


        mSelectText.setOnTouchListener(new View.OnTouchListener()
        {
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                switch (event.getAction())
                {
                    case MotionEvent.ACTION_DOWN:
                        if (mMutilShowDetailTaskses == null || mMutilShowDetailTaskses.size() == 0)
                        {
                            return true;
                        }
                        mSelectText.setTextColor(getResourcesColor(R.color.white));
                        mIsSelectAll = !mIsSelectAll;

                        int size = mFormulaManagerAdapter.getFormulaManagementList().size();
                        List<FormulaMutilUpDetailTasks> formulaManagementList = mFormulaManagerAdapter
                                .getFormulaManagementList();
                        if (formulaManagementList == null)
                            return true;
                        for (int i = 0; i < size; i++)
                        {
                            mCheckedMap.put(formulaManagementList.get(i).getDevice(), mIsSelectAll);

                        }
                        for (int i = 0; i < size; i++)
                        {
                            if (mIsSelectAll)
                            {
                                mAllUpselcetMap.put(formulaManagementList.get(i).getDevice(), formulaManagementList.get(i));
                            } else
                            {
                                mAllUpselcetMap.remove(formulaManagementList.get(i).getDevice());
                            }
                        }
                        mFormulaManagerAdapter.notifyDataSetChanged();

                        if (mIsSelectAll)
                        {
                            mSelectText.setText(getResourcesString(R.string.select_none));
                            mSelectAmount = mCheckedMap.size();
                        } else
                        {
                            mSelectText.setText(getResourcesString(R.string.select_all));
                            mSelectAmount = 0;
                        }

                        break;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:
                        mSelectText.setTextColor(getResourcesColor(R.color.half_white));
                        break;
                }
                return true;
            }
        });


    }

    public void setSearch()
    {
        if (mSearchEditText.getText().length() == 0)
        {
            mSearchEditText.setTextColor(getResourcesColor(R.color.formula_loginbtn));
            mSearchEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
                    getResourcesDrawable(R.drawable.search_half_white), null);
            mSearchEditText.setHint("");
        }
        InputMethodManager m = (InputMethodManager) getActivity().getSystemService(Context
                .INPUT_METHOD_SERVICE);

//        Globals.log("输入法调用到了" + m.isActive());
        m.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(),
                InputMethodManager.HIDE_NOT_ALWAYS);
        resetData();

    }

    private void loadView()
    {
        mTvUpload = (TextView) mRootView.findViewById(R.id.upload);
        mSearchEditText = (EditText) mRootView.findViewById(R.id.tv_search);
        mFormulaManagerListView = (ListView) mRootView.findViewById(R.id.lv_formula_manager);
        mSelectText = (TextView) mRootView.findViewById(R.id.select);
    }

    @Override
    public void onClick(View v)
    {
        switch (v.getId())
        {
            case R.id.upload:
                onUploadClick();
                break;
        }
    }

    private void onUploadClick()
    {
        if (mAllUpselcetMap != null)
        {
            if (mAllUpselcetMap.size() == 0)
            {
                showToast(getString(R.string.please_choice_formula));
                return;
            }
//            log("0 mAllUpselcetMap : " + mAllUpselcetMap.toString());
        }

        if (LoginManager.RETURN_LOGIN_TRUE != LoginManager.checkFormulaAccountInfo(getActivity()))
        {
            LoginManager.showLoginDialog(LoginManager.FORMULA, getActivity(), new OnLoadingListener()
            {
                @Override
                public void loginSuccess(Dialog dialog, String user, LoginInfo loginInfo)
                {
                    onUploadClick();
                }

                @Override
                public void loginException(Dialog dialog)
                {

                }

                @Override
                public void loginFail(Dialog dialog, LoginFailInfo loginFailInfo)
                {
                }
            });
            return;
        }
        mMutilUpDetailTaskses.clear();
        //如果在有显示配方管理详情时,点击回传会只上传配方管理详情中所选的配方
        boolean isCheckOk = true;

        ArrayList<String> noDoenList = new ArrayList<String>();

        if (mAllUpselcetMap != null && mAllUpselcetMap.size() != 0)
        {
            mTvUpload.setTextColor(getResourcesColor(R.color.white));
            mTvUpload.setCompoundDrawablesWithIntrinsicBounds(getResourcesDrawable(R.drawable
                    .formula_upload_hit), null, null, null);
            for (FormulaMutilUpDetailTasks formulaMutilUpDetailTasks : mAllUpselcetMap.values())
            {
                if (!formulaMutilUpDetailTasks.isDone())
                {
                    noDoenList.add(formulaMutilUpDetailTasks.getTileName());
                    isCheckOk = false;
                    continue;
                }
                FormulaMutilInvoiceInfo formulaMutilInvoiceInfo = mFormulaCHisDbManager.querySingleWriteInfo(formulaMutilUpDetailTasks.getID(), formulaMutilUpDetailTasks.getRecipeID());
                mMutilUpDetailTaskses.add(formulaMutilInvoiceInfo);

            }
            if (mMutilUpDetailTaskses != null && mMutilUpDetailTaskses.size() != 0)
                FormulaConvertUtils.convertUpdataMultiep(getActivity(), mMutilUpDetailTaskses);
        } else
        {
            isCheckOk = false;
        }
        if (!isCheckOk)
        {
            SimpleStyleDialog dialog = new SimpleStyleDialog(getActivity());
            StringBuilder stringBuilder = new StringBuilder();
            if (noDoenList.size() > 0)
            {
                if (noDoenList.size() != 0)
                {
                    stringBuilder.append("\n");
                }
                stringBuilder.append(getString(R.string.dialog_info_formula_nodetail));
                for (int i = 0; i < noDoenList.size(); i++)
                {
                    stringBuilder.append("\n" + "   ---" + noDoenList.get(i));
                }
            }

            dialog.setMessage(stringBuilder.toString(), getResourcesString(R.string.bottom_ok),
                    getResourcesString(R.string.bottom_back)).show();
            return;
        }

        mTvUpload.setTextColor(getResourcesColor(R.color.gray_white));
        mTvUpload.setCompoundDrawablesWithIntrinsicBounds(getResourcesDrawable(R
                .drawable
                .formula_upload), null, null, null);
        if (mMutilShowDetailTaskses == null || mMutilShowDetailTaskses.size() == 0)
        {
            showToast(getString(R.string.please_choice_formula));
            return;
        }
        if (!WifiUtil.isNetworkAvailable(getActivity())) {
            showToast(getResourcesString(R.string.network_do_not_pass));
            return;
        }
        FormulaMutilHttpManager instance = FormulaMutilHttpManager.getInstance(getActivity());
        showWaitDialog();
        instance.updateMultiFormulaInfo(mMutilUpDetailTaskses, getActivity(), new FormulaOkHttpListener<String>()
        {
            @Override
            public void onResponse(final String response, Request request, Exception e)
            {
                Handler handler = new Handler(getActivity().getMainLooper());
                if (e == null && request == null && response != null)
                {
                    handler.post(new Runnable()
                    {
                        @Override
                        public void run()
                        {
                            Gson gson = new Gson();
                            FormulaMulitTasks result = gson.fromJson(response, new TypeToken<FormulaMulitTasks>()
                            {
                            }.getType());
                            if (mFormulaCDbManager.deleteByID(result.getID()) && mFormulaCHisDbManager.deleteByID(result.getID()))
                            {
                                remoVariable(result);
                                mFormulaCDbManager.deleteFormulaDoingByName(result.getDevice());
                                if (!isDetached() && isAdded())
                                {
                                    resetData();
                                    showToast(getResourcesString(R.string.upload_successful));
                                    closeWaitDialog();
                                }
                            }
                        }
                    });

                } else
                {
                    if (e != null)
                    {
                        String errorMsg = e.getMessage();
                        if (!TextUtils.isEmpty(errorMsg))
                        {
                            if (errorMsg.contains("Authorization"))
                            {
                                try
                                {
                                    LoginManager.showLoginDialog(LoginManager.FORMULA, getActivity(), new OnLoadingListener()
                                    {
                                        @Override
                                        public void loginSuccess(Dialog dialog, String user, LoginInfo loginInfo)
                                        {
                                            try
                                            {
                                                onUploadClick();
                                            } catch (Exception e1)
                                            {
                                                e1.printStackTrace();
                                            }
                                        }

                                        @Override
                                        public void loginException(Dialog dialog)
                                        {

                                        }

                                        @Override
                                        public void loginFail(Dialog dialog, LoginFailInfo loginFailInfo)
                                        {

                                        }
                                    });
                                } catch (Exception ee)
                                {
                                    ee.printStackTrace();
                                }
                            }
                        }
                    }
                    handler.post(new Runnable()
                    {
                        @Override
                        public void run()
                        {
                            if (isAdded())
                                showToast(getResourcesString(R.string.upload_fail));
                            closeWaitDialog();
                        }
                    });
                }

            }
        }, new IUploadMultipleListener()
        {
            @Override
            public void onStatus(ArrayList<FormulaMulitTasks> list, ArrayList<Integer> errolist)
            {
            }
        });
    }


    private void showWaitDialog()
    {
        try
        {
            //显示等待保存结果
            if (mWaitDialog != null)
            {
                if (mWaitDialog.isShowing())
                {
                    mWaitDialog.dismiss();
                }
            }
            mWaitDialog = new BaseWaitingDialog(getActivity(), getString(R.string.transmission_str));
            mWaitDialog.show();
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    private void closeWaitDialog()
    {
        try
        {
            if (mWaitDialog != null && mWaitDialog.isShowing())
            {
                mWaitDialog.dismiss();
            }
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }

//    @Override
//    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
//    {
//        if (mFormulaManagerAdapter.getFormulaManagementList() != null)
//        {
//            if(mFormulaManagerAdapter.getFormulaManagementList().get(position)!=null)
//            {
//                mFormulaManagerAdapter.getFormulaManagementList().get(position);
//                if(mFormulaLoginDialog!=null)
//                    mFormulaLoginDialog.dismiss();
//                mFormulaLoginDialog =null;
//                mFormulaLoginDialog = new FormulaLoginDialog(LoginManager.FORMULA, getActivity(), new OnLoadingListener()
//                {
//
//                    private UpdateWeightDataDialog mUpdateWeightDataDialog;
//                    @Override
//                    public void loginSuccess(Dialog dialog, String user, LoginInfo loginInfo)
//                    {
//                        showToast(getResourcesString(R.string.login_success));
//                        dialog.dismiss();
//                    }
//
//                    @Override
//                    public void loginException(Dialog dialog)
//                    {
//                        showToast(getResourcesString(R.string.login_failure));
//                        dialog.dismiss();
//                        if(mUpdateWeightDataDialog!=null)
//                        {
//                            mUpdateWeightDataDialog.dismiss();
//                            mUpdateWeightDataDialog = null;
//                        }
//                        mUpdateWeightDataDialog = new UpdateWeightDataDialog();
//                        getString(R.string.chk_value1);
//
//                        Bundle bundle = new Bundle();
//                        bundle.putString("",getString(R.string.chk_value1));
//                        bundle.putString("",getString(R.string.accvalue));
//                        bundle.putString("",getString(R.string.tossweight));
//                        mUpdateWeightDataDialog.setArguments(bundle);
//                        mUpdateWeightDataDialog.settingVariable("11","22","33");
//                        mUpdateWeightDataDialog.setOnDialogClickListener(new UpdateWeightDataDialog.OnDialogClickListener()
//                        {
//                            @Override
//                            public void onOkClick(UpdateWeightDataDialog dialog, String inputString)
//                            {
//
//                            }
//
//                            @Override
//                            public void onCancelClick(UpdateWeightDataDialog dialog)
//                            {
//                                dialog.dismiss();
//                            }
//                        });
//                        mUpdateWeightDataDialog.show(getChildFragmentManager(),UpdateWeightDataDialog.class.getSimpleName());
//                    }
//                    @Override
//                    public void loginFail(Dialog dialog, LoginFailInfo loginFailInfo)
//                    {
//                        showToast(getResourcesString(R.string.login_failure));
//                        dialog.dismiss();
//                    }
//                });
//                mFormulaLoginDialog.show();
//            }
//        }
//        return false;
//    }

    class FormulaManagerAdapter extends BaseAdapter
    {
        private View mCheckItem;
        private List<FormulaMutilUpDetailTasks> mDetailTasksList = new ArrayList<FormulaMutilUpDetailTasks>();
        private FormulaMutilUpDetailTasks mFormulaMutilUpDetailTasks = null;

        public void setData(Map<String, FormulaMutilUpDetailTasks> formulaManagementMap)
        {
            if (null == formulaManagementMap)
            {
                return;
            }
            mSelectAmount = 0;
            Iterator iter = formulaManagementMap.entrySet().iterator();
            mDetailTasksList.clear();
            while (iter.hasNext())
            {
                Map.Entry entry = (Map.Entry) iter.next();
                FormulaMutilUpDetailTasks value = (FormulaMutilUpDetailTasks) entry.getValue();
                if (mCheckedMap.get(value.getDevice()))
                {
                    mSelectAmount++;
                }
                mDetailTasksList.add(value);
            }
        }

        public void setData(List<FormulaMutilUpDetailTasks> upDetailTasksList)
        {
            if (null == upDetailTasksList)
            {
                return;
            }
            mSelectAmount = 0;
            mDetailTasksList.clear();
            mDetailTasksList.addAll(upDetailTasksList);
            for (FormulaMutilUpDetailTasks detailTaskse : mDetailTasksList)
            {
                if (mCheckedMap.get(detailTaskse.getDevice()))
                {
                    mSelectAmount++;
                }
            }
        }

        public List<FormulaMutilUpDetailTasks> getFormulaManagementList()
        {
            return mDetailTasksList;
        }

        @Override
        public int getCount()
        {
            if (mDetailTasksList == null || mDetailTasksList.size() == 0)
                return 0;
            return mDetailTasksList.size();
        }

        @Override
        public Object getItem(int position)
        {
            return position;
        }

        @Override
        public long getItemId(int position)
        {
            return position;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent)
        {
            final ViewHolder holder;
            if (null == convertView)
            {
                convertView = LayoutInflater.from(getActivity()).inflate(R.layout
                        .item_formula_manager_multipe, null);
                holder = new ViewHolder();

                holder.checkbox = (CheckBox) convertView.findViewById(R.id.checkbox);
                holder.formulaName = (TextView) convertView.findViewById(R.id.formula_name);
                holder.name1 = (TextView) convertView.findViewById(R.id.name1);//id
                holder.amount1 = (TextView) convertView.findViewById(R.id.amount1);//weight
                holder.data1 = (LinearLayout) convertView.findViewById(R.id.data1);

            } else
            {
                holder = (ViewHolder) convertView.getTag();
            }

            mFormulaMutilUpDetailTasks = mDetailTasksList.get(position);
            if (mFormulaMutilUpDetailTasks != null)
            {
                holder.formulaName.setText(mFormulaMutilUpDetailTasks.getTileName());
                holder.name1.setText(mFormulaMutilUpDetailTasks.getDevice());
                holder.amount1.setText(ConvertUtils.removeZero(mFormulaMutilUpDetailTasks.getFinishWeight()) + " " + mFormulaMutilUpDetailTasks.getUnit());
                Globals.log("1 setFinishWeight : " + ConvertUtils.removeZero(mFormulaMutilUpDetailTasks.getFinishWeight() + " "));
                holder.checkbox.setChecked(mCheckedMap.get(mFormulaMutilUpDetailTasks.getDevice()));
                convertView.setOnLongClickListener(new View.OnLongClickListener()
                {
                    @Override
                    public boolean onLongClick(View v)
                    {
                        if (mFormulaManagerAdapter.getFormulaManagementList() != null)
                        {
                            if (mFormulaManagerAdapter.getFormulaManagementList().get(position) != null)
                            {
                                mFormulaManagerAdapter.getFormulaManagementList().get(position);
                                if (mFormulaLoginDialog != null)
                                    mFormulaLoginDialog.dismiss();
                                mFormulaLoginDialog = null;
                                mFormulaLoginDialog = new FormulaLoginDialog(LoginManager.ADMIN_FORMULA, getActivity(), new OnLoadingListener()
                                {
                                    private UpdateWeightDataDialog mUpdateWeightDataDialog;

                                    @Override
                                    public void loginSuccess(Dialog dialog, String user, LoginInfo loginInfo)
                                    {
                                        showToast(getResourcesString(R.string.login_success));
                                        dialog.dismiss();
                                        mUpdateWeightDataDialog = new UpdateWeightDataDialog();
                                        Bundle bundle = new Bundle();
                                        final FormulaMutilUpDetailTasks formulaMutilUpDetailTasks = mDetailTasksList.get(position);
                                        final String standardWeight = ConvertUtils.removeZero(formulaMutilUpDetailTasks.getStandWeight());
                                        final String finishWeight = ConvertUtils.removeZero(formulaMutilUpDetailTasks.getFinishWeight());
                                        float tempDropWeight = FormulaMutilProcessManager.getDropWeight(getActivity(), formulaMutilUpDetailTasks.getDevice());
                                        int dropUnitId = FormulaMutilProcessManager.getDropWeightUnitId(getActivity(), formulaMutilUpDetailTasks.getDevice());
                                        final float dropWeight = FormulaConvertUtils.convertMultiep(getActivity(), formulaMutilUpDetailTasks.getDevice(), tempDropWeight, dropUnitId);
                                        bundle.putString(Constants.FORMULA_MULAT_STAND, getString(R.string.chk_value1) + standardWeight+" "+mFormulaMutilUpDetailTasks.getUnit());
                                        bundle.putString(Constants.FORMULA_MULAT_ACC, getString(R.string.accvalue) + finishWeight +" "+ mFormulaMutilUpDetailTasks.getUnit());
                                        bundle.putString(Constants.FORMULA_MULAT_TOSS, getString(R.string.tossweight) + dropWeight + " " + mFormulaMutilUpDetailTasks.getUnit());
                                        bundle.putString(Constants.FORMULA_MULAT_DEVIATION_WEIGHT, getString(R.string.deviation_weight_hint) + ConvertUtils.removeZero((float)mFormulaMutilUpDetailTasks.getDeviationWeight() +"") + " " + mFormulaMutilUpDetailTasks.getUnit());
                                        mUpdateWeightDataDialog.setArguments(bundle);
                                        mUpdateWeightDataDialog.setOnDialogClickListener(new UpdateWeightDataDialog.OnDialogClickListener()
                                        {
                                            @Override
                                            public void onOkClick(UpdateWeightDataDialog dialog, float inputWeight)
                                            {
                                                log("inputString : "+inputWeight);
//                                                if(Float.valueOf(inputString)>=0 &&
//                                                        Float.valueOf(inputString)<=Float.valueOf(ConvertUtils.removeZero(mDetailTasksList.get(position).getStandWeight())))
//                                                {
                                                float sumWeight = 0.0f;
                                                float sWeight = 0.0f;
                                                String sumWeightString = "0";
                                                try {
                                                    float fWeight = Float.parseFloat(finishWeight);
                                                    sWeight = Float.parseFloat(standardWeight);
                                                    sumWeight = fWeight + dropWeight + inputWeight;
                                                    if (fWeight == 0f) {
                                                        WeightFormat.updateFormat(mDecimalFormat,Constants.DEFAULT_FORMULA_DECIAL_NUM);
                                                    } else {
                                                        WeightFormat.updateFormat(mDecimalFormat,formulaMutilUpDetailTasks.getDecimalsNum());
                                                    }
                                                    sumWeightString = mDecimalFormat.format(sumWeight);
                                                } catch (Exception e) {
                                                    e.printStackTrace();
                                                }
                                                SimpleStyleDialog simpleStyleDialog = new SimpleStyleDialog(getActivity());
                                                simpleStyleDialog.setMessage(String.format(getString(R.string.update_formula_weight_hint), sumWeightString));
                                                final float finalSumWeight = sumWeight;
                                                final float finalSWeight1 = sWeight;
                                                final float finalIWeight1 = inputWeight;
                                                simpleStyleDialog.setOnDialogClickListener(new SimpleStyleDialog.OnDialogClickListener() {
                                                    @Override
                                                    public void onOkClick(SimpleStyleDialog dialog) {
                                                        FormulaMutilHisRecInfo weightInfo = new FormulaMutilHisRecInfo();
                                                        weightInfo.setID(formulaMutilUpDetailTasks.getID());
                                                        weightInfo.setRecipeID(formulaMutilUpDetailTasks.getRecipeID());
                                                        weightInfo.setWeight(finalIWeight1 + dropWeight); // 机型单位的显示值
                                                        weightInfo.setDecimalsNum(formulaMutilUpDetailTasks.getDecimalsNum());
                                                        weightInfo.setUnitId(FormulaMutilManager.DEFAULT_UNITID);  // 机型单位id
                                                        weightInfo.setDate(DateTimeUtils.getStringDate());  // 时间日期
                                                        weightInfo.setScaleName(formulaMutilUpDetailTasks.getDevice());  // 设备名称
                                                        mFormulaCHisDbManager.insert(weightInfo);
                                                        if (finalSumWeight >= (finalSWeight1 -formulaMutilUpDetailTasks.getDeviationWeight())) {
                                                            mFormulaCDbManager.updateMaterialDoneState(formulaMutilUpDetailTasks.getID(),
                                                                    formulaMutilUpDetailTasks.getRecipeID(),true);
                                                        }
                                                        mUpdateWeightDataDialog.dismiss();
                                                        resetData();
                                                        FormulaMutilProcessManager.clearConfig(getActivity());
                                                    }

                                                    @Override
                                                    public void onCancelClick(SimpleStyleDialog dialog) {

                                                    }
                                                });
                                                simpleStyleDialog.setCancelable(false);
                                                simpleStyleDialog.setCanceledOnTouchOutside(false);
                                                simpleStyleDialog.show();
//                                                    mFormulaCHisDbManager.insert();
//                                                    if(mFormulaCHisDbManager.updateMaterialWeight(mDetailTasksList.get(position).getID(),Float.valueOf(inputString)))
//                                                    {
//                                                        showToast(getString(R.string.modified_success));
//                                                            resetData();
//                                                    }
//                                                }else
//                                                {
//                                                    showToast(getString(R.string.inputweightwarning));
//                                                }
                                            }

                                            @Override
                                            public void onCancelClick(UpdateWeightDataDialog dialog)
                                            {
                                            }
                                        });
                                        mUpdateWeightDataDialog.show(getChildFragmentManager(), UpdateWeightDataDialog.class.getSimpleName());
                                    }

                                    @Override
                                    public void loginException(Dialog dialog)
                                    {
                                        showToast(getResourcesString(R.string.login_failure));
                                        dialog.dismiss();
                                        if (mUpdateWeightDataDialog != null)
                                        {
                                            mUpdateWeightDataDialog.dismiss();
                                            mUpdateWeightDataDialog = null;
                                        }

                                    }

                                    @Override
                                    public void loginFail(Dialog dialog, LoginFailInfo loginFailInfo)
                                    {
                                        showToast(getResourcesString(R.string.login_failure));
                                        dialog.dismiss();
                                    }
                                });
                                mFormulaLoginDialog.show();
                            }
                        }
                        return false;
                    }
                });
                convertView.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                        holder.checkbox.setChecked(!holder.checkbox.isChecked());
                        if (holder.checkbox.isChecked())
                        {
                            mAllUpselcetMap.put(mDetailTasksList.get(position).getDevice(), mDetailTasksList.get(position));
                        } else
                        {
                            mAllUpselcetMap.remove(mDetailTasksList.get(position).getDevice());
                        }
                        mCheckedMap.put(mDetailTasksList.get(position).getDevice(), holder.checkbox.isChecked());
//                        Globals.log("1 mCheckedMap : " + mDetailTasksList.get(position) + " | " + holder.checkbox.isChecked() + "|" + position);
                        if (mSearchEditText.getText().length() == 0)
                        {
                            mSearchEditText.setTextColor(getResourcesColor(R.color.formula_loginbtn));
                            mSearchEditText.setCompoundDrawablesWithIntrinsicBounds(null, null,
                                    getResourcesDrawable(R.drawable.search_half_white), null);
                            mSearchEditText.setHint("");
                        }


                        if (holder.checkbox.isChecked())
                        {
                            mSelectAmount++;
                        } else
                        {
                            mSelectAmount--;
                        }

                        int size = mDetailTasksList.size();
                        if (mSelectAmount == size)
                        {
                            mIsSelectAll = true;
                            mSelectText.setText(getResourcesString(R.string.select_none));
                        } else
                        {
                            mIsSelectAll = false;
                            mSelectText.setText(getResourcesString(R.string.select_all));
                        }

                    }
                });
            }
            convertView.setTag(holder);
            return convertView;
        }

        protected void setCheckItem(View checkItem)
        {
            mCheckItem = checkItem;
        }

        protected View getCheckItem()
        {
            return mCheckItem;
        }
    }


    class ViewHolder
    {
        CheckBox checkbox;
        TextView formulaName;
        TextView name1;
        TextView amount1;
        LinearLayout data1;
    }

    @Override
    public void onResume()
    {
        super.onResume();
        EventBus.getDefault().register(this);
    }

    @Override
    public void onPause()
    {
        super.onPause();
        EventBus.getDefault().unregister(this);
    }

    public void onEventMainThread(FormulaMulitTasks response)
    {
//        resetData();
    }

    private void remoVariable(FormulaMulitTasks result)
    {
        if (result == null)
        {
            return;
        }
        if (mAllUpselcetMap != null)
            mAllUpselcetMap.remove(result.getDevice());
        if (mSelectMap != null)
            mSelectMap.remove(result.getDevice());
        if (mFormulaShowMap != null)
            mFormulaShowMap.remove(result.getDevice());
        if (mCheckedMap != null)
            mCheckedMap.remove(result.getDevice());
    }

}
 
xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/formula_manager_background"
              xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@color/navy_blue"
              android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="@dimen/standard_padding">

        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:text="@string/formula_manager_fragment"
            android:textColor="@color/white"
            android:textSize="@dimen/formula_title"/>

        <EditText
            android:id="@+id/tv_search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/standard_margin"
            android:background="@drawable/search_box"
            android:drawableEnd="@drawable/search_half_white"
            android:gravity="center"
            android:imeOptions="flagNoExtractUi"
            android:maxEms="10"
            android:singleLine="true"
            android:textColor="@color/formula_loginbtn"
            android:textCursorDrawable="@null"/>

        <TextView
            android:id="@+id/select"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/upload"
            android:layout_alignTop="@+id/upload"
            android:layout_marginEnd="@dimen/standard_margin"
            android:layout_toLeftOf="@+id/upload"
            android:background="@drawable/search_box"
            android:gravity="center"
            android:paddingEnd="@dimen/standard_padding"
            android:paddingStart="@dimen/standard_padding"
            android:singleLine="true"
            android:text="@string/select_all"
            android:textColor="@color/gray_white"
            android:textSize="@dimen/formula_manager_upload"/>

        <TextView
            android:id="@+id/upload"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:layout_marginEnd="@dimen/standard_margin"
            android:layout_marginStart="@dimen/standard_margin"
            android:background="@drawable/search_box"
            android:drawableStart="@drawable/formula_upload"
            android:gravity="center"
            android:imeOptions="flagNoExtractUi"
            android:maxEms="10"
            android:paddingEnd="@dimen/standard_padding"
            android:singleLine="true"
            android:text="@string/erp_action_up_load"
            android:textColor="@color/gray_white"
            android:textCursorDrawable="@null"
            android:textSize="@dimen/formula_manager_upload"/>

    </RelativeLayout>

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@color/white">

        <ListView
            android:id="@+id/lv_formula_manager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="@dimen/standard_margin"
            android:background="@color/white"
            android:divider="@color/white"
            android:dividerHeight="@dimen/standard_margin"/>

    </FrameLayout>

</LinearLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值