UserResultVoteFragment.java 8.82 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.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
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;
import java.util.List;

public class UserResultVoteFragment extends BaseFragment {

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

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

    private UserAdapter userAdapter;
    private List<UserData> dataList;

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

    private TextView yingdaoresult;
    private TextView shidaoresult;
    // 表決结果
    private TextView fragmentResultMemo;
    private TextView fragmentMemo;
    private ListView listView;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_result_user, 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);
        listView = root.findViewById(R.id.multi_vote_result_listview);
        dataList = new ArrayList<>();
        userAdapter = new UserAdapter(dataList);
        listView.setAdapter(userAdapter);
        showResult();
        return root;
    }

    @Override
    public void onResume() {
        super.onResume();
        ((MainActivity)getActivity()).setBackgroundColor(Color.parseColor("#042148"));
    }

    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) {
        dataList.clear();
        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;
                }
                String szc = "" ;
                if (type == 1) {
                    //分母
                    if ((fenmu > 0 && fenmu != 0xff)) {
                        double pzc = value1 * 1.0 / fenmu * 100;
                        szc = formatDoubleToString(pzc, digiters, false);
                    }
                } else {
                    //分母
                    if ((fenmu > 0 && fenmu != 0xffff)) {
                        double pzc = value1 * 1.0 / fenmu * 100;
                        szc = formatDoubleToString(pzc, digiters, false);
                    }
                }


                String text = "" + value1 ;
                if(szc != null && !"".equals(szc)){
                    text += "(" + szc + "%)" ;
                }
                UserData userData = new UserData();
                userData.name = options[i -1];
                userData.desc = text;
                dataList.add(userData);
            }
        }
        if (notVote != 0xff) {
            String strOpt4 = "" ;
            if ((fenmu > 0 && fenmu != 0xff)) {
                strOpt4 = "0%" ;
            }else{
            }
            String text = "" + notVote ;
            if(strOpt4 != null && !"".equals(strOpt4)){
                text += "(" + strOpt4 + "%)" ;
            }
            UserData userData = new UserData();
            userData.name = getString(R.string.weian);
            userData.desc = text;
            dataList.add(userData);
        }
        userAdapter.notifyDataSetChanged();
    }
    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);
        }
    }

    class UserData{
        String name;
        String desc;
    }

    class UserAdapter extends BaseAdapter{

        private List<UserData> dataList;

        public UserAdapter(List<UserData> dataList){
            this.dataList = dataList;
        }


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

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

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder = null;
            if(convertView == null){
                viewHolder = new ViewHolder();
                convertView = LayoutInflater.from(getActivity()).inflate(R.layout.item_user_vote_result,null);
                viewHolder.nameTextView = convertView.findViewById(R.id.name);
                viewHolder.descTextView = convertView.findViewById(R.id.desc);
                convertView.setTag(viewHolder);
            }else{
                viewHolder = (ViewHolder) convertView.getTag();
            }
            viewHolder.nameTextView.setText(dataList.get(position).name);
            viewHolder.descTextView.setText(dataList.get(position).desc);
            return convertView;
        }
    }

    class ViewHolder{
        TextView nameTextView;
        TextView descTextView;
    }
}