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 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 dataList; public UserAdapter(List 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; } }