UserResultVoteFragment.java 6.87 KB
package com.sunvote.xpadapp.fragments;

import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.sunvote.xpadapp.MainActivity;
import com.sunvote.xpadapp.R;
import com.sunvote.xpadapp.base.BaseFragment;
import com.sunvote.xpadapp.db.modal.BillInfo;
import com.sunvote.xpadapp.db.modal.MultiTitleItem;

import java.text.DecimalFormat;
import java.util.ArrayList;

public class UserResultVoteFragment extends BaseFragment {

    private byte[] data;
    private String[] options;

    public void setData(byte[] data) {
        this.data = data;
    }

    public void setOptions(String[] options) {
        this.options = options;
    }

    private TextView yingdaoresult;
    private TextView shidaoresult;
    // 表決结果
    private TextView fragmentResultMemo;
    private TextView fragmentMemo;
    //
//    private LinearLayout tResult;
//    private LinearLayout dResult;
//    private LinearLayout pResult;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_result_vote, container, false);
        yingdaoresult = root.findViewById(R.id.yingdaoresult);
        shidaoresult = root.findViewById(R.id.shidaoresult);
        fragmentResultMemo = root.findViewById(R.id.fragment_result_memo);
        fragmentMemo = root.findViewById(R.id.fragment_memo);

//        tResult = root.findViewById(R.id.t_result);
//        dResult = root.findViewById(R.id.d_result);
//        pResult = root.findViewById(R.id.p_result);
        showResult();
        return root;
    }

    private View createView(String txt,int color) {
        TextView tv1 = new TextView(getActivity());
        ViewGroup.LayoutParams vlp = new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        tv1.setLayoutParams(vlp);//设置TextView的布局
        tv1.setText(txt);
        tv1.setGravity(Gravity.CENTER);

        tv1.setTextSize(25);
        tv1.setTextColor(color);
        return tv1;
    }

    int fenmu,goToBe,goTo,notVote;


    private void showResult() {
        int bitNum = data[2] & 0xf;
        int digiters = data[2] >> 4 & 0xf;
        int voteNo = data[3] & 0xff;
        int resultSelectModel = data[4] & 0xff; //表决结果
        if (bitNum == 0) { //单字节数值
            fenmu = data[5] & 0xff;
            goToBe= data[6] & 0xff;
            goTo= data[7] & 0xff;
            notVote= data[8] & 0xff;
            int pos =9;
            int i = pos;
            for (; i < data.length; i++) {
                if (pos == data.length - 1) {
                    break;
                }
                setView(pos,digiters,bitNum,1);
            }
            if (goToBe != 0xff) {
                yingdaoresult.setText("" + goToBe);
            }
            if (goTo != 0xff) {
                shidaoresult.setText("" + goTo);
            }
            if (resultSelectModel != 0xFF) {
                if(options!=null){
                    fragmentResultMemo.setText(options[resultSelectModel]);
                }
            }
        } else {
            fenmu = (data[5] <<8 | data[6]) & 0xffff;
            goToBe = (data[7] << 8 | data[8]) & 0xffff;
            goTo = (data[9] << 8 | data[10]) & 0xffff;
            notVote=  (data[11] << 8 | data[12]) & 0xffff;

            int pos = 13;
            int i = pos;
            for (; i < data.length; i++) {
                if (pos == data.length - 1) {
                    break;
                }
                setView(pos,digiters,bitNum,2);
            }
            if (goToBe != 0xff) {
                yingdaoresult.setText("" + goToBe);
            }
            if (goTo != 0xff) {
                shidaoresult.setText("" + goTo);
            }
            if (resultSelectModel != 0xFF) {
                if(options!=null){
                    fragmentResultMemo.setText(options[resultSelectModel]);
                }
            }
        }
    }

    private void setView(int pos, int digiters, int bitNum, int type) {
//        tResult.removeAllViews();
//        dResult.removeAllViews();
//        pResult.removeAllViews();
        LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT,1.0f);
        for(int i = 1; i <= options.length ; i++) {
            if (options.length >= i) {
                int value1;
                if (bitNum == 0) {
                    value1 = (data[pos++]) & 0xff;
                } else {
                    value1 = (data[pos++] << 8 | data[pos++]) & 0xffff;
                }
//                tResult.addView(createView(options[i - 1], Color.YELLOW), lp);
//                dResult.addView(createView("" + value1, Color.WHITE), lp);
                if (type == 1) {
                    //分母
                    if ((fenmu > 0 && fenmu != 0xff)) {
                        double pzc = value1 * 1.0 / fenmu * 100;
                        String szc = formatDoubleToString(pzc, digiters, false);
//                        pResult.addView(createView(szc + "%", Color.WHITE), lp);
                    }
                } else {
                    //分母
                    if ((fenmu > 0 && fenmu != 0xffff)) {
                        double pzc = value1 * 1.0 / fenmu * 100;
                        String szc = formatDoubleToString(pzc, digiters, false);
//                        pResult.addView(createView(szc + "%", Color.WHITE), lp);
                    }
                }
            }
        }
        if (notVote != 0xff) {
//            tResult.addView(createView(getString(R.string.weian), Color.YELLOW), lp);
//            dResult.addView(createView("" + notVote, Color.WHITE), lp);
            if ((fenmu > 0 && fenmu != 0xff)) {
//                pResult.addView(createView("0%", Color.WHITE), lp);
            }else{
//                pResult.setVisibility(View.GONE);
            }
        }
    }
    public static String formatDoubleToString(double value, Integer digits, boolean remove) {

        if (value == 0 || value == 100) {
            DecimalFormat df = new DecimalFormat("0");
            return df.format(value);
        }

        if (digits == null || digits < 0) {
            return String.valueOf(value);
        } else if (digits == 0) {
            DecimalFormat df = new DecimalFormat("0");
            return df.format(value);
        } else {
            String temp = "0";
            if (remove) {
                temp = "#";
            }
            StringBuffer buffer = new StringBuffer("0.");
            for (int i = 0; i < digits; i++) {
                buffer.append(temp);
            }
            DecimalFormat df = new DecimalFormat(buffer.toString());
            return df.format(value);
        }
    }

}