ResultElectionFragmentBack.java 8.1 KB
package com.sunvote.xpadapp.fragments;

import java.util.ArrayList;

import com.sunvote.xpadapp.MainActivity;
import com.sunvote.xpadapp.R;
import com.sunvote.xpadapp.base.MyFragment;
import com.sunvote.xpadapp.db.modal.BillInfo;
import com.sunvote.xpadapp.db.modal.MultiTitleItem;
import com.sunvote.xpadcomm.XPadApi;
import com.sunvote.xpadcomm.XPadApiInterface;
import com.sunvote.xpadcomm.XPadApiInterface.BatchVoteInfo;

import android.annotation.SuppressLint;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.View.OnScrollChangeListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class ResultElectionFragmentBack extends MyFragment {
	private String TAG = "ResultElectionFragment";
	public String[] aryContent;
	public byte[] data;
	public BillInfo bill;
	public ArrayList<MultiTitleItem> subInfo;
	public ArrayList<ResultItem> aryList;
	public String resultStr;

	public String[] options;

	private TextView tvTitle;
	private ListView listview;
	private MyAdapter mAdapter;

	private int paiminType;

	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 view = inflater.inflate(R.layout.fragment_result_election, container, false);
		final MainActivity mact = (MainActivity) getActivity();

		initData();

		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(ResultElectionFragmentBack.this);
				tx.commit();
				//mact.resultFragment = null;
			}
		});

		listview = (ListView) view.findViewById(R.id.fragment_result_election_list);
		aryContent = resultStr.split(";");
		if (aryContent.length > 0) {
			paiminType = aryContent[0].equals("0") ? 0 : 1;
		}

		/*aryList = new ArrayList<ResultItem>();
		for (int i = 1; i < aryContent.length; i++) {
			ResultItem tempItem = new ResultItem();
			if (i < subInfo.size()) {
				MultiTitleItem it = subInfo.get(i-1);
				tempItem.name = it.title;
				tempItem.piaoshu = Integer.parseInt(aryContent[i]);
			} else {
				String[] aryOther = aryContent[i].split(",");
				if (aryOther.length > 1) {
					tempItem.name = aryOther[0];
					tempItem.piaoshu = Integer.parseInt(aryOther[1]);
				}
			}
			aryList.add(tempItem);
		}
		calcPaimin();*/
		
		mAdapter = new MyAdapter(getActivity());
		listview.setAdapter(mAdapter);

		tvTitle = (TextView) view.findViewById(R.id.fragment_result_election_bill_title);
		tvTitle.setText(bill.title);

		return view;
	}

	int fenmu;//百分比分母
	int goToBe;//应到
	int goTo;//实到

	private void initData() {
		int bitNum = data[2] & 0xf;
		int digiters = data[2] >> 4 & 0xf;
		int voteNo = data[3] & 0xff;
		int resultSelectModel = data[4] & 0xf; //控制选举结果模式
		int resultShowModel = data[4] >> 4  & 0xf; //显示结果模式

		aryList = new ArrayList<ResultItem>();
		if (bitNum == 0) { //单字节数值
			fenmu = data[5] & 0xff;
			goToBe= data[6] & 0xff;
			goTo= data[7] & 0xff;

			int pos = 8;
			int i = pos;
			for (; i < data.length; i++) {
				if (data[i] == '\0')
					break;
				ResultItem it = new ResultItem();
				it.nameIndex = data[pos] & 0xff;
				int nameLenght = data[pos++] & 0xff;
				String hex = Integer.toHexString((data[pos++] << 8 | data[pos+nameLenght]) & 0xffff);
				int pollNum = data[pos++] & 0xff;
				subInfo = mMainActivity.dbm.getCandidateList(mMainActivity.meetingId, bill.billId);
				aryList.add(it);
			}
		} else {
			fenmu = (data[5] << 8 | data[6]) & 0xffff;
			goToBe = (data[7] << 8 | data[8]) & 0xffff;
			goTo = (data[9] << 8 | data[10]) & 0xffff;

			int pos = 11;
			int i = pos;
			for (; i < data.length; i++) {
				if (data[i] == '\0')
					break;
				ResultItem it = new ResultItem();
				it.nameIndex = (data[pos] << 8 | data[pos++]) & 0xffff;
				int nameLenght = (data[pos++] << 8 | data[pos++]) & 0xffff;
				String hex = Integer.toHexString((data[pos++] << 8 | data[pos+nameLenght]) & 0xffff);
				int pollNum = data[pos++] & 0xff;
				subInfo = mMainActivity.dbm.getCandidateList(mMainActivity.meetingId, bill.billId);
				aryList.add(it);
			}
		}
	}

	/*public void calcPaimin(){
		for(int i=0;i<aryList.size();i++){
			for(int j=i;j<aryList.size();j++){
				ResultItem it = aryList.get(i);
				ResultItem it1 = aryList.get(j);
				if(it1.piaoshu>it.piaoshu){
					aryList.remove(j);
					aryList.add(i, it1);
				}
			}
		}
		
		int paimin = 1;
		int binlie = 0;
		for(int i=0;i<aryList.size();i++){
			ResultItem it = aryList.get(i);
			if( i>0 ){
				ResultItem pit = aryList.get(i-1);
				if(it.piaoshu == pit.piaoshu){
					binlie++;
				}else if(it.piaoshu < pit.piaoshu){
					
					paimin++;
					if(paiminType==1){
						paimin+= binlie;
					}
					binlie=0;
				}
			}
			it.paimin = paimin;
		}
	}*/

	/*
	  *
	 * 新的选举结果格式如 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();
			}

			ResultItem it = aryList.get(position);
			holder.tvNum.setText(String.valueOf(it.nameIndex));
			holder.tvName.setText(it.name);
			holder.tvAgree.setText(String.valueOf(it.agreeNum));
			holder.tvOppose.setText(String.valueOf(it.opposeNum));
			holder.tvAbstant.setText(String.valueOf(it.abstantNum));
			holder.tvResult.setText(String.valueOf(it.electionResult));
			return convertView;
		}

		public final class ViewHolder {
			public TextView tvNum;
			public TextView tvName;
			public TextView tvAgree;
			public TextView tvOppose;
			public TextView tvAbstant;
			public TextView tvResult;
		}
	}
}