package com.kaixin.android.menu;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.kaixin.android.KXApplication;
import com.kaixin.android.R;
import com.kaixin.android.result.RecommendResult;
import com.kaixin.android.ui.base.FlipperLayout.OnOpenListener;
import com.kaixin.android.utils.CommonUtils;
import com.kaixin.android.utils.TextUtil;
/**
* 菜单游戏类
*
* @author gyz
*
*/
public class Recommend {
private Context mContext;
private KXApplication mKXApplication;
private View mRecommend;
private Button mMenu;
private ListView mDisplay;
private Button mOfficial;
private Button mAppDownLoad;
private OnOpenListener mOnOpenListener;
private RecommendAdapter mAdapter;
// 是否为官方模块
private boolean mIsOfficial = true;
public Recommend(Context context, KXApplication application) {
mContext = context;
mKXApplication = application;
mRecommend = LayoutInflater.from(context).inflate(R.layout.recommend,
null);
findViewById();
setListener();
init();
}
private void findViewById() {
mMenu = (Button) mRecommend.findViewById(R.id.recommend_menu);
mDisplay = (ListView) mRecommend.findViewById(R.id.recommend_display);
mOfficial = (Button) mRecommend.findViewById(R.id.recommend_official);
mAppDownLoad = (Button) mRecommend
.findViewById(R.id.recommend_appdownload);
if(!CommonUtils.isNetWorkConnected(mKXApplication)){
mRecommend.findViewById(R.id.warnning_layout).setVisibility(View.VISIBLE);
}else{
mRecommend.findViewById(R.id.warnning_layout).setVisibility(View.GONE);
}
}
private void setListener() {
mMenu.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (mOnOpenListener != null) {
mOnOpenListener.open();
}
}
});
mOfficial.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!mIsOfficial) {
mIsOfficial = true;
mOfficial
.setBackgroundResource(R.drawable.bottomtabbutton_leftred);
mAppDownLoad
.setBackgroundResource(R.drawable.bottomtabbutton_rightwhite);
mAdapter = new RecommendAdapter(
mKXApplication.mMyRecommendOfficialResults);
mDisplay.setAdapter(mAdapter);
}
}
});
mAppDownLoad.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (mIsOfficial) {
mIsOfficial = false;
mOfficial
.setBackgroundResource(R.drawable.bottomtabbutton_leftwhite);
mAppDownLoad
.setBackgroundResource(R.drawable.bottomtabbutton_rightred);
mAdapter = new RecommendAdapter(
mKXApplication.mMyRecommendAppDownLoadResults);
mDisplay.setAdapter(mAdapter);
}
}
});
}
private void init() {
// 获取官方模块数据
getOfficial();
// 获取应用下载数据
getAppDownLoad();
// 添加适配器
mAdapter = new RecommendAdapter(
mKXApplication.mMyRecommendOfficialResults);
mDisplay.setAdapter(mAdapter);
}
/**
* 获取官方模块数据
*/
private void getOfficial() {
if (mKXApplication.mMyRecommendOfficialResults.isEmpty()) {
InputStream inputStream;
try {
inputStream = mContext.getAssets().open(
"data/recommend_official.KX");
String json = new TextUtil(mKXApplication)
.readTextFile(inputStream);
JSONArray array = new JSONArray(json);
RecommendResult result = null;
for (int i = 0; i < array.length(); i++) {
result = new RecommendResult();
result.setName(array.getJSONObject(i).getString("name"));
result.setIcon(array.getJSONObject(i).getString("icon"));
result.setTitle(array.getJSONObject(i)
.getJSONObject("title").getBoolean("istitle"));
result.setTitleName(array.getJSONObject(i)
.getJSONObject("title").getString("titlename"));
mKXApplication.mMyRecommendOfficialResults.add(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 获取应用下载数据
*/
private void getAppDownLoad() {
if (mKXApplication.mMyRecommendAppDownLoadResults.isEmpty()) {
InputStream inputStream;
try {
inputStream = mContext.getAssets().open(
"data/recommend_appdownload.KX");
String json = new TextUtil(mKXApplication)
.readTextFile(inputStream);
JSONArray array = new JSONArray(json);
RecommendResult result = null;
for (int i = 0; i < array.length(); i++) {
result = new RecommendResult();
result.setName(array.getJSONObject(i).getString("name"));
result.setIcon(array.getJSONObject(i).getString("icon"));
result.setDescription(array.getJSONObject(i).getString(
"description"));
mKXApplication.mMyRecommendAppDownLoadResults.add(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private class RecommendAdapter extends BaseAdapter {
private List<RecommendResult> mResults;
public RecommendAdapter(List<RecommendResult> results) {
if (results != null) {
mResults = results;
} else {
mResults = new ArrayList<RecommendResult>();
}
}
public int getCount() {
return mResults.size();
}
public Object getItem(int position) {
return mResults.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(
R.layout.recommend_item, null);
holder = new ViewHolder();
holder.title = (TextView) convertView
.findViewById(R.id.recommend_item_title);
holder.title_line = (ImageView) convertView
.findViewById(R.id.recommend_item_title_line);
holder.icon = (ImageView) convertView
.findViewById(R.id.recommend_item_icon);
holder.name = (TextView) convertView
.findViewById(R.id.recommend_item_name);
holder.description = (TextView) convertView
.findViewById(R.id.recommend_item_description);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
RecommendResult result = mResults.get(position);
if (mIsOfficial) {
holder.description.setVisibility(View.GONE);
if (result.isTitle()) {
holder.title.setVisibility(View.VISIBLE);
holder.title_line.setVisibility(View.VISIBLE);
holder.title.setText(result.getTitleName());
} else {
holder.title.setVisibility(View.GONE);
holder.title_line.setVisibility(View.GONE);
}
} else {
holder.description.setVisibility(View.VISIBLE);
holder.title.setVisibility(View.GONE);
holder.title_line.setVisibility(View.GONE);
holder.description.setText(result.getDescription());
}
holder.icon.setImageBitmap(mKXApplication.getRecommend(result
.getIcon()));
holder.name.setText(result.getName());
return convertView;
}
class ViewHolder {
TextView title;
ImageView title_line;
ImageView icon;
TextView name;
TextView description;
}
}
public View getView() {
return mRecommend;
}
public void setOnOpenListener(OnOpenListener onOpenListener) {
mOnOpenListener = onOpenListener;
}
}