package com.todayinfo.ui.activity; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.json.JSONArray; import org.json.JSONObject; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.jinghua.todayinformation.R; import com.loopj.android.http.AsyncHttpResponseHandler; import com.squareup.picasso.Picasso; import com.todayinfo.model.GameDatail; import com.todayinfo.model.GameDetailItem; import com.todayinfo.ui.component.ErrorHintView; import com.todayinfo.ui.component.ErrorHintView.OperateListener; import com.todayinfo.utils.AsyncHttpUtil; import com.todayinfo.utils.JsonUtils; /** * 游戏详情界面 * * @author zhou.ni 2015年5月17日 */ public class GameDetailActivity extends SuperActivity { private static final String URL_PATH = "http://www.gamept.cn/yx_zt.php?ztid="; private ErrorHintView mErrorHintView; // private ListView mListView; private LinearLayout containLayout; private ImageView mImageView; private TextView mTitle; private TextView mIntro; // private GameDetailAdapter adapter; private List<GameDetailItem> mList = new ArrayList<GameDetailItem>(); public static int VIEW = 1; /**显示断网**/ public static int VIEW_WIFIFAILUER = 2; /** 显示加载数据失败 **/ public static int VIEW_LOADFAILURE = 3; public static int VIEW_LOADING = 4; private String ztid; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game_detail); initView(); } /** * 初始化控件 */ private void initView() { Intent intent = getIntent(); ztid = intent.getStringExtra("ztid"); RelativeLayout headView = (RelativeLayout) this.findViewById(R.id.head); headView.findViewById(R.id.back_left).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); TextView title = (TextView) headView.findViewById(R.id.head_title); title.setText("游戏专题"); mErrorHintView = (ErrorHintView) this.findViewById(R.id.hintView); // mListView = (ListView) this.findViewById(R.id.list); containLayout = (LinearLayout) this.findViewById(R.id.list); mTitle = (TextView) this.findViewById(R.id.name); mImageView = (ImageView) this.findViewById(R.id.image); mIntro = (TextView) this.findViewById(R.id.intro); // ScrollViewUtils.setListViewHeightBasedOnChildren(mListView); // adapter = new GameDetailAdapter(); // mListView.setAdapter(adapter); showLoading(VIEW_LOADING); loadGameDetailData(); } /** * 加载美女详情的图片 */ private void loadGameDetailData(){ if ( containLayout != null ) { containLayout.removeAllViews(); } String url = URL_PATH + ztid; AsyncHttpUtil.get(url, new AsyncHttpResponseHandler() { @Override public void onSuccess(int code, Header[] headers, byte[] responseBody) { try { if ( responseBody!=null && responseBody.length>0 ){ JSONObject obj = new JSONObject(new String(responseBody)); JSONArray array = obj.getJSONArray("items"); GameDatail gameDatail = JsonUtils.getInstance(GameDatail.class, obj); showLoading(VIEW); if ( gameDatail!=null ){ if ( !TextUtils.isEmpty(gameDatail.getZtimg()) ){ Picasso.with(mContext).load("http://www.gamept.cn/" + gameDatail.getZtimg()).placeholder(R.color.ECECEC).error(R.color.ECECEC).into(mImageView); } mTitle.setText(gameDatail.getZtname()); mIntro.setText(gameDatail.getIntro()); } List<GameDetailItem> list = JsonUtils.getInstance(GameDetailItem.class, array); if ( list!=null && list.size()>0 ){ mList.clear(); mList.addAll(list); // adapter.notifyDataSetChanged(); addListView(); } } else { showLoading(VIEW_LOADFAILURE); } }catch (Exception e) { e.printStackTrace(); showLoading(VIEW_LOADFAILURE); } } @Override public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { showLoading(VIEW_WIFIFAILUER); } }); } /** * 添加游戏列表 */ private void addListView(){ for (int i = 0; i < mList.size(); i++) { View view = View.inflate(mContext, R.layout.item_game_detail_lv, null); ImageView icon = (ImageView) view.findViewById(R.id.icon); TextView name = (TextView) view.findViewById(R.id.name); ImageView star = (ImageView) view.findViewById(R.id.star); TextView people = (TextView) view.findViewById(R.id.people); TextView download = (TextView) view.findViewById(R.id.download); TextView size = (TextView) view.findViewById(R.id.size); final GameDetailItem item = mList.get(i); if ( !TextUtils.isEmpty(item.getIcon()) ){ Picasso.with(mContext).load("http://www.gamept.cn/" + item.getIcon()).placeholder(R.color.ECECEC).error(R.color.ECECEC).into(icon); } name.setText(item.getTitle()); if ( !TextUtils.isEmpty(item.getStar()) ){ setPraiseRate(star, item.getStar()); } else { star.setImageResource(R.drawable.start5); } people.setText(item.getTotaldown()+"次"); size.setText(item.getFilesize()); download.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri content_url = Uri.parse("http://www.gamept.cn/" + item.getFlashurl()); intent.setData(content_url); startActivity(intent); } }); containLayout.addView(view); } } /** * 评分星级 * * @param img * @param score */ private void setPraiseRate(ImageView img, String score) { if( score.endsWith("0") ){ img.setImageResource(R.drawable.start0); }else if( score.endsWith("0.5") ){ img.setImageResource(R.drawable.start0_5); }else if( score.endsWith("1") ){ img.setImageResource(R.drawable.start1); }else if( score.endsWith("1.5") ){ img.setImageResource(R.drawable.start1_5); }else if( score.endsWith("2") ){ img.setImageResource(R.drawable.start2); }else if( score.endsWith("2.5") ){ img.setImageResource(R.drawable.start2_5); }else if( score.endsWith("3") ){ img.setImageResource(R.drawable.start3); }else if( score.endsWith("3.5") ){ img.setImageResource(R.drawable.start3_5); }else if( score.endsWith("4") ){ img.setImageResource(R.drawable.start4); }else if( score.endsWith("4.5") ){ img.setImageResource(R.drawable.start4_5); }else if( score.endsWith("5") ){ img.setImageResource(R.drawable.start5); } else { img.setImageResource(R.drawable.start5); } } @Override public void retry() { } @Override public void netError() { } @Override protected void obtainInfo() { } /** * 显示动态加载界面 * * @param i */ private void showLoading(int i){ mErrorHintView.setVisibility(View.GONE); mImageView.setVisibility(View.GONE); mTitle.setVisibility(View.GONE); mIntro.setVisibility(View.GONE); // mListView.setVisibility(View.GONE); containLayout.setVisibility(View.GONE); switch(i){ case 1: mErrorHintView.hideLoading(); containLayout.setVisibility(View.VISIBLE); mImageView.setVisibility(View.VISIBLE); mTitle.setVisibility(View.VISIBLE); mIntro.setVisibility(View.VISIBLE); break; case 2: mErrorHintView.hideLoading(); mErrorHintView.netError(new OperateListener() { @Override public void operate() { showLoading(VIEW_LOADING); loadGameDetailData(); } }); break; case 3: mErrorHintView.hideLoading(); mErrorHintView.loadFailure(new OperateListener() { @Override public void operate() { showLoading(VIEW_LOADING); loadGameDetailData(); } }); break; case 4: mErrorHintView.loadingData(); break; } } class GameDetailAdapter extends BaseAdapter { @Override public int getCount() { return mList.size(); } @Override public Object getItem(int position) { return mList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if ( convertView==null ) { holder = new ViewHolder(); convertView = View.inflate(mContext, R.layout.item_game_detail_lv, null); holder.icon = (ImageView) convertView.findViewById(R.id.icon); holder.name = (TextView) convertView.findViewById(R.id.name); holder.star = (ImageView) convertView.findViewById(R.id.star); holder.people = (TextView) convertView.findViewById(R.id.people); holder.download = (TextView) convertView.findViewById(R.id.download); holder.size = (TextView) convertView.findViewById(R.id.size); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } GameDetailItem item = mList.get(position); if ( !TextUtils.isEmpty(item.getIcon()) ){ Picasso.with(mContext).load("http://www.gamept.cn/" + item.getIcon()).placeholder(R.color.ECECEC).error(R.color.ECECEC).into(holder.icon); } holder.name.setText(item.getTitle()); if ( !TextUtils.isEmpty(item.getStar()) ){ setPraiseRate(holder.star, item.getStar()); } else { holder.star.setImageResource(R.drawable.start5); } holder.people.setText(item.getTotaldown()+"次"); holder.size.setText(item.getFilesize()); return convertView; } private void setPraiseRate(ImageView img, String score) { if( score.endsWith("0") ){ img.setImageResource(R.drawable.start0); }else if( score.endsWith("0.5") ){ img.setImageResource(R.drawable.start0_5); }else if( score.endsWith("1") ){ img.setImageResource(R.drawable.start1); }else if( score.endsWith("1.5") ){ img.setImageResource(R.drawable.start1_5); }else if( score.endsWith("2") ){ img.setImageResource(R.drawable.start2); }else if( score.endsWith("2.5") ){ img.setImageResource(R.drawable.start2_5); }else if( score.endsWith("3") ){ img.setImageResource(R.drawable.start3); }else if( score.endsWith("3.5") ){ img.setImageResource(R.drawable.start3_5); }else if( score.endsWith("4") ){ img.setImageResource(R.drawable.start4); }else if( score.endsWith("4.5") ){ img.setImageResource(R.drawable.start4_5); }else if( score.endsWith("5") ){ img.setImageResource(R.drawable.start5); } else { img.setImageResource(R.drawable.start5); } } } static class ViewHolder { ImageView icon; TextView name; ImageView star; TextView people; TextView download; TextView size; } }