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.Gravity; 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.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.ycanfunc.util.StringUtils; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import static com.sunvote.xpadapp.utils.MyStringUtil.replaceBlank; public class ResultElectionFragment extends BaseFragment { private View view; private String TAG = "ResultElectionFragment"; public String[] aryContent; public BillInfo bill; public MultiTitleItem subInfo; public ArrayList aryList; public String resultStr; public String[] options; public byte[] data; private TextView tvResult; private TextView tvTitle; private ListView listview; private MyAdapter mAdapter; public class ResultItem { public String name;//姓名 public int nameIndex;//排名 public int agreeNum;// 赞成票数 public int opposeNum;// 反对票数 public int abstantNum;// 弃权票数 public int electionResult;//结果 } @SuppressLint("NewApi") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(TAG, "onCreateView"); view = inflater.inflate(R.layout.fragment_result_election, container, false); final MainActivity mact = (MainActivity) getActivity(); tvTitle = (TextView) view.findViewById(R.id.fragment_result_election_bill_title); tvResult = (TextView) view.findViewById(R.id.fragment_result_election_result); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { ; } }); ((MainActivity)getActivity()).setBackgroundColor(Color.parseColor("#042160")); initData(); initView(); ImageButton btnBack = (ImageButton) view.findViewById(R.id.fragment_result_election_btn_back); btnBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { FragmentManager fm = getFragmentManager(); FragmentTransaction tx = fm.beginTransaction(); tx.remove(ResultElectionFragment.this); tx.commit(); //mact.resultFragment = null; } }); /* //按赞成票数升序排序 Collections.sort(aryList,new Comparator() { public int compare(ResultItem resultItem0, ResultItem resultItem1) { int flag=Integer.valueOf(resultItem0.agreeNum).compareTo(resultItem1.agreeNum); if(flag==0){ return Integer.valueOf(resultItem0.agreeNum).compareTo(resultItem1.agreeNum); }else{ return flag; } } });*/ mAdapter = new MyAdapter(getActivity()); listview.setAdapter(mAdapter); /*if(bill!=null){ tvTitle.setText(bill.title); }*/ return view; } int fenmu;//百分比分母 int goToBe;//应到 int goTo;//实到 int resultBits; int resultSelectModel; int indexNameModel; private void initView(){ TextView tvAgree= (TextView) view.findViewById(R.id.fragment_result_election_agree_num); TextView tvOppose= (TextView) view.findViewById(R.id.fragment_result_election_oppose_num); TextView tvAbstant= (TextView) view.findViewById(R.id.fragment_result_election_abstant_num); TextView tvIndexName= (TextView) view.findViewById(R.id.fragment_result_election_num); TextView tv_to_be= (TextView) view.findViewById(R.id.yingdaoresult); TextView tv_to= (TextView) view.findViewById(R.id.shidaoresult); if(goToBe!=0xff && goToBe!=0xffff){ tv_to_be.setVisibility(View.VISIBLE); tv_to_be.setText("" + goToBe); }else{ tv_to_be.setVisibility(View.GONE); } if(goTo!=0xff && goTo!=0xffff){ tv_to.setVisibility(View.VISIBLE); tv_to.setText("" + goTo); }else{ tv_to.setVisibility(View.GONE); } if(indexNameModel==0){ tvIndexName.setText(getString(R.string.my_number)); }else if(indexNameModel==1){ tvIndexName.setText(getString(R.string.name_index)); } /*显示结果模式 0 显示赞成、反对、弃权票数 1 显示赞成、反对票数 2 显示赞成、弃权票数 3 显示赞成票数*/ if(resultSelectModel==0){ tvAgree.setVisibility(View.VISIBLE); tvOppose.setVisibility(View.VISIBLE); tvAbstant.setVisibility(View.VISIBLE); }else if(resultSelectModel==1){ tvAgree.setVisibility(View.VISIBLE); tvOppose.setVisibility(View.VISIBLE); tvAbstant.setVisibility(View.GONE); }else if(resultSelectModel==2){ tvAgree.setVisibility(View.VISIBLE); tvOppose.setVisibility(View.GONE); tvAbstant.setVisibility(View.VISIBLE); }else if(resultSelectModel==3){ tvAgree.setVisibility(View.VISIBLE); tvOppose.setVisibility(View.GONE); tvAbstant.setVisibility(View.GONE); } listview = (ListView) view.findViewById(R.id.fragment_result_election_list); } private void initData() { int bitNum = data[2] & 0xf; int digiters = data[2] >> 4 & 0xf; int voteNo = data[3] & 0xff; int selectPeople= data[4] & 0xff; //候选人数 resultSelectModel = data[5] & 0xf; //控制选举结果模式 indexNameModel = data[5] >> 4 & 0xf; //序号排名模式 0 序号 1 排名 resultBits =(data[6] << 8 | data[7]) & 0xffff; //选举结果,如果是0xFFFF不显示(0 未通过、1 通过) bill = mMainActivity.dbm.getBillInfo(mMainActivity.meetingId, voteNo); if(bill!=null){ tvTitle.setText(replaceBlank(bill.title)); } aryList = new ArrayList(); if (bitNum == 0) { //单字节数值 fenmu = data[8] & 0xff; goToBe= data[9] & 0xff; goTo= data[10] & 0xff; int pos = 11; int i = pos; for (; i < data.length; i++) { if (pos >= data.length) { break; } ResultItem it = new ResultItem(); it.nameIndex = data[pos++] & 0xff; if(it.nameIndex==0){ break; } int peopleIndexTemp = data[pos++] & 0xff; int peopleIndex= peopleIndexTemp + 1; if(peopleIndexTemp==0xff){ // int nameLenght = data[pos++] & 0xff; int resultBits= pos + nameLenght; int index=0; byte[] nameByte = new byte[nameLenght]; for(;pos> moveBits) & 1; tvResult.setVisibility(View.VISIBLE); } if(StringUtils.isEmpty(it.name) && peopleIndex==0){ break; } aryList.add(it); } } else { fenmu = (data[8] << 8 | data[9]) & 0xffff; goToBe = (data[10] << 8 | data[11]) & 0xffff; goTo = (data[12] << 8 | data[13]) & 0xffff; int pos =14; int i = pos; for (; i < data.length; i++) { if (pos >= data.length) { break; } ResultItem it = new ResultItem(); it.nameIndex =(data[pos++] << 8 | data[pos++]) & 0xffff; if(it.nameIndex==0){ break; } int peopleIndexTemp = (data[pos++] << 8 | data[pos++]) & 0xffff; int peopleIndex= peopleIndexTemp + 1; if(peopleIndexTemp==0xffff){ // int nameLenght = data[pos++] & 0xff; int resultBits= pos + nameLenght; int index=0; byte[] nameByte = new byte[nameLenght]; for(;pos> moveBits) & 1; tvResult.setVisibility(View.VISIBLE); } if(StringUtils.isEmpty(it.name) && peopleIndex==0){ break; } aryList.add(it); } } } /* * * 新的选举结果格式如 0;2;2;3;4;5;张三,3 0代表排名方式按1123,如传1代表排名方式1134,就是排名递增 * 从第二个数字开始为候选人名单表格里面的按ID排序的候选人的赞成票数 另选他人的就接在候选人后面 */ /* * 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 aryList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return aryList.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; Log.v("BaseAdapterTest", "getView " + position + " " + convertView); if (convertView == null) { convertView = mInflater.inflate(R.layout.list_result_election_item, null); holder = new ViewHolder(); holder.tvNum = (TextView) convertView.findViewById(R.id.item_result_election_num); holder.tvName = (TextView) convertView.findViewById(R.id.item_result_election_name); holder.tvAgree = (TextView) convertView.findViewById(R.id.item_result_election_agree); holder.tvOppose = (TextView) convertView.findViewById(R.id.item_result_election_oppose_num); holder.tvAbstant = (TextView) convertView.findViewById(R.id.item_result_election_abstant_num); holder.tvResult = (TextView) convertView.findViewById(R.id.item_result_election_result); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } /*显示结果模式 0 显示赞成、反对、弃权票数 1 显示赞成、反对票数 2 显示赞成、弃权票数 3 显示赞成票数*/ if(resultSelectModel==0){ holder.tvAgree.setVisibility(View.VISIBLE); holder.tvOppose.setVisibility(View.VISIBLE); holder.tvAbstant.setVisibility(View.VISIBLE); }else if(resultSelectModel==1){ holder.tvAgree.setVisibility(View.VISIBLE); holder.tvOppose.setVisibility(View.VISIBLE); holder.tvAbstant.setVisibility(View.GONE); }else if(resultSelectModel==2){ holder.tvAgree.setVisibility(View.VISIBLE); holder.tvOppose.setVisibility(View.GONE); holder.tvAbstant.setVisibility(View.VISIBLE); }else if(resultSelectModel==3){ holder.tvAgree.setVisibility(View.VISIBLE); holder.tvOppose.setVisibility(View.GONE); holder.tvAbstant.setVisibility(View.GONE); } ResultItem it = aryList.get(position); holder.tvNum.setText(String.valueOf(it.nameIndex)); //holder.tvName.setText(it.name); DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); int width = metrics.widthPixels/5-80; if(!TextUtils.isEmpty(it.name)){ TextViewUtils.adjustTvTextSize(holder.tvName,width,it.name); } holder.tvName.setText(it.name); //holder.tvName.setGravity(Gravity.CENTER_VERTICAL); holder.tvAgree.setText(String.valueOf(it.agreeNum)); holder.tvOppose.setText(String.valueOf(it.opposeNum)); holder.tvAbstant.setText(String.valueOf(it.abstantNum)); if(it.electionResult==0xffff){ holder.tvResult.setVisibility(View.GONE); }else{ if(it.electionResult==0){ //0 未通过、1 通过 holder.tvResult.setVisibility(View.VISIBLE); holder.tvResult.setText(getString(R.string.no_pass)); }else{ holder.tvResult.setText(getString(R.string.pass)); } } if (position % 2 == 0) { convertView.setBackgroundColor(getResources().getColor(R.color.blue2)); } return convertView; } public final class ViewHolder { public TextView tvNum; public TextView tvName; public TextView tvAgree; public TextView tvOppose; public TextView tvAbstant; public TextView tvResult; } } }