/** * */ package com.hupu.games.activity; import java.io.Serializable; import java.util.ArrayList; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Html; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.hupu.games.R; import com.hupu.games.activity.goldbean.GoldBeanWebViewActivity; import com.hupu.games.adapter.QuizListingAdapter; import com.hupu.games.casino.CasinoDialog; import com.hupu.games.casino.MyBoxActivity; import com.hupu.games.common.HuPuRes; import com.hupu.games.data.BitCoinReq; import com.hupu.games.data.IncreaseEntity; import com.hupu.games.data.LiveEntity.Answer; import com.hupu.games.data.game.quiz.QuizCommitResp; import com.hupu.games.data.game.quiz.QuizEntity; import com.hupu.games.data.game.quiz.QuizListResp; import com.hupu.games.data.game.quiz.QuizResp; import com.hupu.games.pay.BasePayActivity; import com.hupu.games.view.PinnedHeaderXListView; import com.hupu.games.view.PinnedHeaderXListView.IXListViewListener; import com.hupu.http.HupuHttpHandler; import com.pyj.http.RequestParams; /** * @author papa 上墙榜 需要lid和gid */ public class QuizListActivity extends BasePayActivity { PinnedHeaderXListView mListView; QuizListingAdapter mAdapter; Intent in; LayoutInflater mInflater; View v; TextView userInfo, coinNum ,boxNum; int openQid = 0; private View topInfo; private boolean isIncrease = false; private int []bets; String CoinNum = "0"; Handler myHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 1: getQuizList(); break; } super.handleMessage(msg); } }; //关闭定时器 // TimerTask task = new TimerTask(){ // public void run() { // Message message = new Message(); // message.what = 1; // myHandler.sendMessage(message); // } // }; //private Timer timer = new Timer(true); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_quiz_list); coinNum = (TextView) findViewById(R.id.coin_num); boxNum = (TextView) findViewById(R.id.box_num); mInflater = LayoutInflater.from(this); initParameter(); in = getIntent(); mParams.put("lid", "" + in.getIntExtra("lid", 1)); mParams.put("gid", "" + in.getIntExtra("gid", 0)); mParams.put("token", mToken); bets = in.getIntArrayExtra("bets"); openQid = in.getIntExtra("qid", 0); //openQid = 10; mListView = (PinnedHeaderXListView) findViewById(R.id.list_player); topInfo = LayoutInflater.from(this).inflate( R.layout.quiz_list_head, null); userInfo = (TextView) topInfo.findViewById(R.id.user_info); mListView.addHeaderView(topInfo); mListView.setPullLoadEnable(false, false); mListView.setXListViewListener(new pullListener()); mAdapter = new QuizListingAdapter(this, click); mListView.setAdapter(mAdapter); setOnClickListener(R.id.btn_back); setOnClickListener(R.id.user_quiz_info); setOnClickListener(R.id.gold_num); //timer.schedule(task,1, 30000); //延时1000ms后执行,1000ms执行一次 } /** 设置listview 上拉和下拉的监听 */ class pullListener implements IXListViewListener { @Override public void onRefresh() { //加载最新竞猜数据 //mListView.setFreshState(); getQuizList(); } @Override public void onLoadMore() { } } private Answer answer; private QuizResp quizList; CasinoDialog mCasinoDialog; /** */ public void showCasinoDialog(final Answer answer, int blc,boolean isB) { reqBitCoin(answer.casino_id); bets[6] = answer.max_bet; mCasinoDialog = new CasinoDialog(this, click,bets,isB); mCasinoDialog.goShow(answer); } @Override public void treatClickEvent(int id) { super.treatClickEvent(id); switch (id) { case R.id.btn_back: if (quizList != null && quizList.list !=null) { getJoinQuiz(); } Intent quizzedIntent = new Intent(); quizzedIntent.putExtra("increase", (Serializable)increaseList); setResult(RESULT_OK,quizzedIntent); finish(); break; case R.id.user_quiz_info: Intent intent = new Intent(this, GuessRankActivity.class); intent.putExtra("lid", in.getIntExtra("lid", 1)); intent.putExtra("gid", in.getIntExtra("gid", 0)); intent.putExtra("rank_type", 0); startActivity(intent); break; case R.id.gold_num: Intent info = new Intent(this, UserInfoActivity.class); startActivity(info); break; case R.id.btn_cancel: isIncrease = false; if (mCasinoDialog != null) mCasinoDialog.dismiss(); break; case R.id.btn_confirm: int cb =mCasinoDialog.canBet(); if(cb>0 ) { isExchange = false; sendQuizCommit(answer, mCasinoDialog.getInputCoin()); } else if(cb==-1) showChargeNotify(mCasinoDialog.getBetDif());//没钱提示去冲钱 if (mCasinoDialog != null) mCasinoDialog.dismiss(); break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQ_GO_POST_ORDER) { if(data!=null) { isExchange = true; sendQuizCommit(answer, mCasinoDialog.getInputCoin()); } } } @Override public void treatClickEvent(View view) { int id = view.getId(); switch (id) { case R.id.btn_answer1: if (mToken == null) { // 需要登录 switchToPhoneBindAct(); } else { answer = (Answer) view.getTag(); if (answer != null) { if (!mCasinoDialog.isShowing()) { showCasinoDialog(answer, 0,false); } } } break; case R.id.btn_answer2: if (mToken == null) { // 需要登录 switchToPhoneBindAct(); } else { answer = (Answer) view.getTag(); if (answer != null) { if (!mCasinoDialog.isShowing()) { showCasinoDialog(answer, 0,false); } } } break; case R.id.open_result: if (mToken == null) { // 需要登录 switchToPhoneBindAct(); } else { Intent info = new Intent(this, UserGoldActivity.class); startActivity(info); } break; // case R.id.box_img: // Intent box = new Intent(this, MyBoxActivity.class); // startActivityForResult(box, REQ_SHOW_BOX); // break; case R.id.pop_box_toast: Intent pop = new Intent(this, MyBoxActivity.class); startActivityForResult(pop, REQ_SHOW_BOX); break; case R.id.btn_increase: if (mToken == null) { // 需要登录 switchToPhoneBindAct(); } else { isIncrease = true; answer = (Answer) view.getTag(); if (answer != null) { showCasinoDialog(answer, 0,true); } } break; default: break; } } public void switchToPhoneBindAct() { //dialog(QuizListActivity.this); } public void getQuizList() { initParameter(); mParams.put("lid", "" + in.getIntExtra("lid", 1)); mParams.put("gid", "" + in.getIntExtra("gid", 0)); mParams.put("token", mToken); sendRequest(HuPuRes.REQ_METHOD_QUIZ_LIST, mParams, new HupuHttpHandler( this), false); } private void setSelection(QuizResp list) { int size = 0; int i = 0; for (QuizListResp quizList : list.list) { if (quizList.status == 2) { for (QuizEntity entity : quizList.mQuizList) { if (entity.qid == openQid) { size =size + i; break; } i++; } break; }else size = size + quizList.mQuizList.size(); } size = size +list.list.size()+1; if (size >0 &&size < mAdapter.getCount()) { //mListView.setSelection(size); mListView.setSelection(size); } openQid = 0; } @Override public void onReqResponse(Object o, int methodId) { //super.onReqResponse(o, methodId); // if (methodId == HuPuRes.REQ_METHOD_QUIZ_LIST) { if (o != null) { quizList = (QuizResp) o; mAdapter = new QuizListingAdapter(this, click); //mAdapter.setData(quizList.list); mListView.setAdapter(mAdapter); mAdapter.notifyDataSetChanged(); mListView.stopRefresh(); mListView.stopLoadMore(); //直播列表传来的 if (openQid != 0) { setSelection(quizList); } int winCoin = quizList.coin > 0 ? quizList.coin : 0; if (quizList.join > 0) { topInfo.setVisibility(View.VISIBLE); } userInfo.setText(Html.fromHtml("参与" + quizList.join + "场竞猜,猜赢" + quizList.win + (quizList.win <=0 ? "场,暂无排名":"场,排名第"+ quizList.winRank) + ",总奖金" + winCoin + (winCoin <= 0 ? "金豆,暂无排名" : "金豆,排名第" + quizList.coinRank))); //宝箱数 未0 宝箱图标隐藏 数字不显示0 findViewById(R.id.box_img).setVisibility(quizList.boxNum > 0 ? View.VISIBLE : View.GONE); boxNum.setText(quizList.boxNum > 0 ? quizList.boxNum+"" : ""); boxNum.setVisibility(quizList.boxNum > 0 ? View.VISIBLE : View.GONE); coinNum.setText("" + (quizList.balance >1000000 ? (quizList.balance/10000)+"万":quizList.balance)); if (quizList.balance == 0) { CoinNum ="0"; }else if (quizList.balance > 0 && quizList.balance <10) { CoinNum ="<10"; } else if (quizList.balance >= 10 && quizList.balance <100) { CoinNum ="10-100"; } else if (quizList.balance >= 100 && quizList.balance <1000) { CoinNum ="100-1000"; }else if (quizList.balance >= 1000) { CoinNum =">1000"; } } } else if (methodId == HuPuRes.REQ_METHOD_QUIZ_COMMIT || methodId == HuPuRes.REQ_METHOD_POST_INCREASE) { // 提交竞猜 QuizCommitResp entity = (QuizCommitResp) o; if (entity.result == -1) showToast("您已经参加过该竞猜了"); else if (entity.result == 1){ getQuizList(); showToast("参与成功"); } else if (entity.result == 2) { getQuizList(); // 通知领救济金 showCustomDialog(DIALOG_SHOW_GET_DOLE, 0, R.string.get_now_info, ONE_BUTTON, R.string.title_confirm, 0); } else if (entity.result == -2) { // showToast("金豆余额不足"); if(!isExchange) { mFragmentLive.showNoMoney(entity.eGoldBean); } } else if (entity.result == -4) { showToast("该竞猜已关闭"); }else{ showToast("投注金额超出限额"); } }else if (methodId ==HuPuRes.REQ_METHOD_BET_COINS) { BitCoinReq req =(BitCoinReq)o; if(req.balance ==-1) { showToast("token无效,请重新登录"); } else { updateMoney(req.betCoins,req.balance); } } } // 更新余额 public void updateMoney(int betCoin,int balance){ if (mCasinoDialog != null && mCasinoDialog.isShowing()) { mCasinoDialog.setBet(betCoin, balance); } } /** 请求余额 */ public void reqBitCoin(int qid) { if(mToken != null) { initParameter(); mParams.put("token", mToken); mParams.put("qid", ""+qid); sendRequest(HuPuRes.REQ_METHOD_BET_COINS, mParams, new HupuHttpHandler( this), false); } } public void sendQuizCommit(Answer answer, int coin) { // RequestParams p = new RequestParams(); p.clear(); p.put("client", mDeviceId); p.put("qid", "" + answer.casino_id); p.put("answer", "" + answer.answer_id); p.put("coin", "" + coin); p.put("roomid", roomid+""); if (mToken != null && coin > 0) p.put("token", mToken); if (isIncrease) { isIncrease = false; sendRequest(HuPuRes.REQ_METHOD_POST_INCREASE, p, new HupuHttpHandler( QuizListActivity.this), false); }else { p.put("lid", "" + in.getIntExtra("lid", 1)); p.put("gid", "" + in.getIntExtra("gid", 0)); sendRequest(HuPuRes.REQ_METHOD_QUIZ_COMMIT, p, new HupuHttpHandler( QuizListActivity.this), false); } } private void showChargeNotify(int bet) { String s =getResources().getString(R.string.no_charge1); showCustomDialog(DIALOG_SHOW_CHARGE_NOTIFY, s.format(s, bet), BaseGameActivity.TOW_BUTTONS, R.string.buy_at_once,R.string.cancel); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); getQuizList(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if (quizList != null && quizList.list !=null) { getJoinQuiz(); } Intent quizzedIntent = new Intent(); quizzedIntent.putExtra("increase", (Serializable)increaseList); setResult(RESULT_OK,quizzedIntent); finish(); } return false; } public ArrayList<IncreaseEntity> increaseList; private void getJoinQuiz(){ IncreaseEntity increase; increaseList = new ArrayList<IncreaseEntity>(); for (QuizListResp listResp:quizList.list) { if (listResp.status == 0) { for(QuizEntity entity : listResp.mQuizList){ if (entity.is_user_join == 1) { increase = new IncreaseEntity(); increase.qid = entity.qid; increase.answerId = entity.user_choose; increaseList.add(increase); } } } } } }