From cadc1d8f90958c9e001b7debffe3763a1f7c7c68 Mon Sep 17 00:00:00 2001 From: wutaian Date: Fri, 15 Mar 2019 17:22:05 +0800 Subject: [PATCH] 新增资源 --- C5/app/src/main/java/com/sunvote/xpadapp/fragments/ResultElectionCustomFragment.java | 418 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ C5/app/src/main/res/drawable/ic_btn_oo.xml | 4 ++++ C5/app/src/main/res/drawable/ic_btn_oo_s.xml | 4 ++++ C5/app/src/main/res/drawable/ic_btn_xx.xml | 4 ++++ C5/app/src/main/res/drawable/ic_btn_xx_s.xml | 4 ++++ C5/app/src/main/res/drawable/ic_delete.xml | 5 +++++ C5/app/src/main/res/drawable/ic_gray_selected.xml | 5 +++++ C5/app/src/main/res/drawable/ic_green_selected.xml | 5 +++++ C5/app/src/main/res/drawable/selected_selector.xml | 37 +++++++++++++++++++++++++++++++++++++ C5/app/src/main/res/layout/fragment_result_election_custom.xml | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ C5/app/src/main/res/layout/list_result_election_custom_item.xml | 42 ++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 671 insertions(+), 0 deletions(-) create mode 100644 C5/app/src/main/java/com/sunvote/xpadapp/fragments/ResultElectionCustomFragment.java create mode 100644 C5/app/src/main/res/drawable/ic_btn_oo.xml create mode 100644 C5/app/src/main/res/drawable/ic_btn_oo_s.xml create mode 100644 C5/app/src/main/res/drawable/ic_btn_xx.xml create mode 100644 C5/app/src/main/res/drawable/ic_btn_xx_s.xml create mode 100644 C5/app/src/main/res/drawable/ic_delete.xml create mode 100644 C5/app/src/main/res/drawable/ic_gray_selected.xml create mode 100644 C5/app/src/main/res/drawable/ic_green_selected.xml create mode 100644 C5/app/src/main/res/drawable/selected_selector.xml create mode 100644 C5/app/src/main/res/layout/fragment_result_election_custom.xml create mode 100644 C5/app/src/main/res/layout/list_result_election_custom_item.xml diff --git a/C5/app/src/main/java/com/sunvote/xpadapp/fragments/ResultElectionCustomFragment.java b/C5/app/src/main/java/com/sunvote/xpadapp/fragments/ResultElectionCustomFragment.java new file mode 100644 index 0000000..dd19318 --- /dev/null +++ b/C5/app/src/main/java/com/sunvote/xpadapp/fragments/ResultElectionCustomFragment.java @@ -0,0 +1,418 @@ +package com.sunvote.xpadapp.fragments; + +import android.annotation.SuppressLint; +import android.app.FragmentManager; +import android.app.FragmentTransaction; +import android.content.Context; +import android.graphics.Color; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.DisplayMetrics; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageButton; +import android.widget.ListView; +import android.widget.TextView; + +import com.sunvote.util.LogUtil; +import com.sunvote.xpadapp.MainActivity; +import com.sunvote.xpadapp.R; +import com.sunvote.xpadapp.base.BaseFragment; +import com.sunvote.xpadapp.base.TextViewUtils; +import com.sunvote.xpadapp.db.modal.BillInfo; +import com.sunvote.xpadapp.db.modal.MultiTitleItem; +import com.sunvote.xpadcomm.XPadApiInterface; +import com.ycanfunc.util.StringUtils; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; + +import static com.sunvote.xpadapp.utils.MyStringUtil.replaceBlank; + +public class ResultElectionCustomFragment extends BaseFragment { + + public byte[] data; + public BillInfo bill; + public XPadApiInterface.VoteInfo voteInfo; + String TAG = "ResultMultiVoteFragment"; + + public ArrayList subInfo; + String[] options; + + private ArrayList aryContent = null; + + private TextView tvTitle; + private TextView titleAbstain; + private TextView titleUnvote; + private TextView titleResult; + + private ListView listview; + private MyAdapter mAdapter; + private int resultBits; + + int fenmu; + int yindao; + int shidao; + + @SuppressLint("NewApi") + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + LogUtil.d(TAG, "onCreateView"); + View view = inflater.inflate(R.layout.fragment_result_multi_vote, container, false); + final MainActivity mact = (MainActivity) getActivity(); + + view.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + ; + } + }); + + listview = (ListView) view.findViewById(R.id.multi_vote_result_listview); + options = bill.billOptions.split("/"); + + try { + initData(); + }catch (Exception ex){ex.printStackTrace();} + + mAdapter = new MyAdapter(getActivity()); + listview.setAdapter(mAdapter); + + tvTitle = (TextView) view.findViewById(R.id.multi_vote_result_tv_title); + if (bill != null) { + tvTitle.setText( replaceBlank(bill.title)); + } + + titleAbstain = (TextView) view.findViewById(R.id.multi_vote_result_title_abstan); + titleUnvote = (TextView) view.findViewById(R.id.multi_vote_result_title_unvote); + titleResult = (TextView) view.findViewById(R.id.multi_vote_result_title_result); + + if (resultBits == 0xffff) { + titleResult.setVisibility(View.GONE); + } else { + titleResult.setVisibility(View.VISIBLE); + } + if (options.length == 2) { + titleAbstain.setVisibility(View.GONE); + } else { + titleAbstain.setVisibility(View.VISIBLE); + } + TextView tvYindao = (TextView) view.findViewById(R.id.multi_vote_result_yindao); + TextView tvShidao = (TextView) view.findViewById(R.id.multi_vote_result_shidao); + if (yindao == 0xff || yindao == 0xffff) { + tvYindao.setVisibility(View.GONE); + } else { + tvYindao.setText("" + + yindao); + tvYindao.setVisibility(View.VISIBLE); + } + + if (shidao == 0xff || shidao == 0xffff) { + tvShidao.setVisibility(View.GONE); + } else { + tvShidao.setText("" + shidao); + tvShidao.setVisibility(View.VISIBLE); + } + + return view; + } + + private void initData() { + + int bitNum = data[2] & 0xf; + int digiters = data[2] >> 4 & 0xf; + int voteNo = data[3] & 0xff; + int startNo = ((data[4] & 0xff) << 8) | (data[5] & 0xff) ; + int endNo = ((data[6] & 0xff) << 8) | (data[7] & 0xff) ; + int rH = data[8] & 0xff; + int rL = data[9] & 0xff; + resultBits = rH << 8 | rL; + + // resultBits = ((data[8] << 8) | data[9]) & 0xff; + + // Log.d(TAG, "data len:" + data.length); + // Toast.makeText(mMainActivity, "data len:" + data.length, + // Toast.LENGTH_LONG).show(); + subInfo = mMainActivity.dbm.getSubBillItems(mMainActivity.meetingId, bill.billId); + aryContent = new ArrayList(); + + if (bitNum == 0) { + // 0 单字节数值(数值范围0-254) 现按一次最多显示5个事项 + fenmu = data[10] & 0xff; + yindao = data[11] & 0xff; + shidao = data[12] & 0xff; + int pos = 13; + for (int i = startNo; i <= endNo; i++) { + ListItem it = new ListItem(); + it.No = i; + it.title = getTitle(i); + it.agree = data[pos++] & 0xff; + it.oppose = data[pos++] & 0xff; + if (pos == data.length - 1) { + aryContent.add(it); + break; + } + if (options.length == 3) { + it.abstain = data[pos++] & 0xff; + } + if (pos == data.length - 1) { + aryContent.add(it); + break; + } + it.unvote = data[pos++] & 0xff; + if (resultBits == 0xffff) { +// it.pass = data[pos++] & 0xff; + it.pass = 0xffff; + } else { + int moveBits = 15 - (i - startNo); + it.pass = (resultBits >> moveBits) & 1; + } + aryContent.add(it); + } + } else if(bitNum == 1){ + // 1 双字节数值(数值范围0-65534) 现按一次最多显示5个事项 + fenmu = (data[10] << 8 | data[11]) & 0xffff; + yindao = (data[12] << 8 | data[13]) & 0xffff; + shidao = (data[14] << 8 | data[15]) & 0xffff; + int pos = 16; + for (int i = startNo; i <= endNo; i++) { + ListItem it = new ListItem(); + it.No = i; + it.title = getTitle(i); + it.agree = (data[pos++] << 8 | data[pos++]) & 0xffff; + it.oppose = (data[pos++] << 8 | data[pos++]) & 0xffff; + if (options.length == 3) { + it.abstain = (data[pos++] << 8 | data[pos++]) & 0xffff; + } + it.unvote = (data[pos++] << 8 | data[pos++]) & 0xffff; + if (resultBits == 0xffff) { + it.pass = 0xffff; + } else { + int moveBits = 15 - (i - startNo); + it.pass = (resultBits >> moveBits) & 1; + } + aryContent.add(it); + } + }else if(bitNum == 2){ + // 0 单字节数值(数值范围0-254) 现按一次最多显示5个事项 + fenmu = data[10] & 0xff; + yindao = data[11] & 0xff; + shidao = data[12] & 0xff; + int pos = 13; + for (int i = startNo; i <= endNo; i++) { + ListItem it = new ListItem(); + it.No = data[pos++] & 0xff; + it.title = getTitle(it.No); + it.agree = data[pos++] & 0xff; + it.oppose = data[pos++] & 0xff; + if (pos == data.length - 1) { + aryContent.add(it); + break; + } + if (options.length == 3) { + it.abstain = data[pos++] & 0xff; + } + if (pos == data.length - 1) { + aryContent.add(it); + break; + } + it.unvote = data[pos++] & 0xff; + if (resultBits == 0xffff) { + it.pass = 0xffff; + } else { + int moveBits = 15 - (i - startNo); + it.pass = (resultBits >> moveBits) & 1; + } + aryContent.add(it); + } + }else if(bitNum == 3){ + // 双字节数值制定表决事项编号(数值范围0-65534)现按一次最多显示5个事项 + // 单字节数值制定表决事项编号(数值范围0-254)现按一次最多显示5个事项 + // 1 双字节数值(数值范围0-65534) 现按一次最多显示5个事项 + fenmu = (data[10] << 8 | data[11]) & 0xffff; + yindao = (data[12] << 8 | data[13]) & 0xffff; + shidao = (data[14] << 8 | data[15]) & 0xffff; + int pos = 16; + for (int i = startNo; i <= endNo; i++) { + ListItem it = new ListItem(); + it.No = (data[pos++] << 8 | data[pos++]) & 0xffff; + it.title = getTitle(it.No); + it.agree = (data[pos++] << 8 | data[pos++]) & 0xffff; + it.oppose = (data[pos++] << 8 | data[pos++]) & 0xffff; + if (options.length == 3) { + it.abstain = (data[pos++] << 8 | data[pos++]) & 0xffff; + } + it.unvote = (data[pos++] << 8 | data[pos++]) & 0xffff; + if (resultBits == 0xffff) { + it.pass = 0xffff; + } else { + int moveBits = 15 - (i - startNo); + it.pass = (resultBits >> moveBits) & 1; + } + aryContent.add(it); + } + } + + } + + private String getTitle(int billNo) { + for (int i = 0; i < subInfo.size(); i++) { + BillInfo subItem = subInfo.get(i); + if (subItem.billNo == billNo) { + return subItem.title; + } + } + return ""; + } + + public class ListItem { + int No; + String title; + int agree; + int oppose; + int abstain; + int unvote; + int pass; + } + + /* + * MyAdapter + * + */ + private class MyAdapter extends BaseAdapter { + + private LayoutInflater mInflater; + + public MyAdapter(Context context) { + this.mInflater = LayoutInflater.from(context); + } + + @Override + public int getCount() { + // TODO Auto-generated method stub + return aryContent.size(); + } + + @Override + public Object getItem(int position) { + // TODO Auto-generated method stub + return aryContent.get(position); + } + + @Override + public long getItemId(int position) { + // TODO Auto-generated method stub + return position; + } + + @Override + public boolean isEnabled(int position) { + // TODO Auto-generated method stub + + return super.isEnabled(position); + } + + @Override + public View getView(final int position, View convertView, ViewGroup parent) { + ViewHolder holder; + LogUtil.v("BaseAdapterTest", "getView " + position + " " + convertView); + + if (convertView == null) { + convertView = mInflater.inflate(R.layout.list_multi_vote_result_item, null); + holder = new ViewHolder(); + + holder.tvNum = (TextView) convertView.findViewById(R.id.list_multi_result_item_num); + holder.tvTitle = (TextView) convertView.findViewById(R.id.list_multi_result_item_name); + holder.tvAgree = (TextView) convertView.findViewById(R.id.list_multi_result_item_agree); + holder.tvOppose = (TextView) convertView.findViewById(R.id.list_multi_result_item_oppose); + holder.tvAbstain = (TextView) convertView.findViewById(R.id.list_multi_result_item_abstan); + holder.tvUnvote = (TextView) convertView.findViewById(R.id.list_multi_result_item_unvote); + holder.tvResult = (TextView) convertView.findViewById(R.id.list_multi_result_item_result); + + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + + + + ListItem it = aryContent.get(position); + holder.tvNum.setText(String.valueOf(it.No)); + holder.tvTitle.setText(it.title); + + + holder.tvOppose.setText(String.valueOf(it.oppose)); + holder.tvAbstain.setText(String.valueOf(it.abstain)); + if(it.agree != 0xff && it.agree != 0xffff){ + holder.tvAgree.setVisibility(View.VISIBLE); + holder.tvAgree.setText(String.valueOf(it.agree)); + }else{ + holder.tvAgree.setVisibility(View.INVISIBLE); + holder.tvAgree.setText(""); + } + if(it.oppose != 0xff && it.oppose != 0xffff){ + holder.tvOppose.setVisibility(View.VISIBLE); + holder.tvOppose.setText(String.valueOf(it.oppose)); + }else{ + holder.tvOppose.setVisibility(View.INVISIBLE); + holder.tvOppose.setText(""); + } + if(it.abstain != 0xff && it.abstain != 0xffff){ + holder.tvAbstain.setVisibility(View.VISIBLE); + holder.tvAbstain.setText(String.valueOf(it.abstain)); + }else{ + holder.tvAbstain.setVisibility(View.INVISIBLE); + holder.tvAbstain.setText(""); + } + + if (it.unvote != 0xff && it.unvote != 0xffff) { + titleUnvote.setVisibility(View.VISIBLE); + holder.tvUnvote.setVisibility(View.VISIBLE); + holder.tvUnvote.setText(String.valueOf(it.unvote)); + } else { + titleUnvote.setVisibility(View.INVISIBLE); + holder.tvUnvote.setVisibility(View.INVISIBLE); + holder.tvUnvote.setText(""); + + } + + String strPass = ""; + + if (it.pass == 0) { + strPass = getString(R.string.no_pass); + } else if (it.pass == 1) { + strPass = getString(R.string.pass); + } + + holder.tvResult.setText(strPass); + if (it.pass == 0xffff) { + holder.tvResult.setVisibility(View.GONE); + } else { + holder.tvResult.setVisibility(View.VISIBLE); + } + + if (options.length == 2) { + holder.tvAbstain.setVisibility(View.GONE); + + } else { + holder.tvAbstain.setVisibility(View.VISIBLE); + } + + return convertView; + } + + + public final class ViewHolder { + public TextView tvNum; + public TextView tvTitle; + public TextView tvAgree; + public TextView tvOppose; + public TextView tvAbstain; + public TextView tvUnvote; + public TextView tvResult; + } + } +} diff --git a/C5/app/src/main/res/drawable/ic_btn_oo.xml b/C5/app/src/main/res/drawable/ic_btn_oo.xml new file mode 100644 index 0000000..73078b2 --- /dev/null +++ b/C5/app/src/main/res/drawable/ic_btn_oo.xml @@ -0,0 +1,4 @@ + + + diff --git a/C5/app/src/main/res/drawable/ic_btn_oo_s.xml b/C5/app/src/main/res/drawable/ic_btn_oo_s.xml new file mode 100644 index 0000000..16f5d74 --- /dev/null +++ b/C5/app/src/main/res/drawable/ic_btn_oo_s.xml @@ -0,0 +1,4 @@ + + + diff --git a/C5/app/src/main/res/drawable/ic_btn_xx.xml b/C5/app/src/main/res/drawable/ic_btn_xx.xml new file mode 100644 index 0000000..75ce9f1 --- /dev/null +++ b/C5/app/src/main/res/drawable/ic_btn_xx.xml @@ -0,0 +1,4 @@ + + + diff --git a/C5/app/src/main/res/drawable/ic_btn_xx_s.xml b/C5/app/src/main/res/drawable/ic_btn_xx_s.xml new file mode 100644 index 0000000..ddf4ee2 --- /dev/null +++ b/C5/app/src/main/res/drawable/ic_btn_xx_s.xml @@ -0,0 +1,4 @@ + + + diff --git a/C5/app/src/main/res/drawable/ic_delete.xml b/C5/app/src/main/res/drawable/ic_delete.xml new file mode 100644 index 0000000..a236836 --- /dev/null +++ b/C5/app/src/main/res/drawable/ic_delete.xml @@ -0,0 +1,5 @@ + + + + diff --git a/C5/app/src/main/res/drawable/ic_gray_selected.xml b/C5/app/src/main/res/drawable/ic_gray_selected.xml new file mode 100644 index 0000000..8dfd7f0 --- /dev/null +++ b/C5/app/src/main/res/drawable/ic_gray_selected.xml @@ -0,0 +1,5 @@ + + + + diff --git a/C5/app/src/main/res/drawable/ic_green_selected.xml b/C5/app/src/main/res/drawable/ic_green_selected.xml new file mode 100644 index 0000000..afdbaec --- /dev/null +++ b/C5/app/src/main/res/drawable/ic_green_selected.xml @@ -0,0 +1,5 @@ + + + + diff --git a/C5/app/src/main/res/drawable/selected_selector.xml b/C5/app/src/main/res/drawable/selected_selector.xml new file mode 100644 index 0000000..7db40a1 --- /dev/null +++ b/C5/app/src/main/res/drawable/selected_selector.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/C5/app/src/main/res/layout/fragment_result_election_custom.xml b/C5/app/src/main/res/layout/fragment_result_election_custom.xml new file mode 100644 index 0000000..f910e54 --- /dev/null +++ b/C5/app/src/main/res/layout/fragment_result_election_custom.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/C5/app/src/main/res/layout/list_result_election_custom_item.xml b/C5/app/src/main/res/layout/list_result_election_custom_item.xml new file mode 100644 index 0000000..bb5dd68 --- /dev/null +++ b/C5/app/src/main/res/layout/list_result_election_custom_item.xml @@ -0,0 +1,42 @@ + + + + + + + + + -- libgit2 0.21.4