package com.kaixin.android.activity;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import com.kaixin.android.KXActivity;
import com.kaixin.android.R;
import com.kaixin.android.result.GiftResult;
import com.kaixin.android.utils.TextUtil;
/**
* 选择礼物类
*
* @author gyz
*
*/
public class SelectGiftActivity extends KXActivity {
private Button mCancel;
private ViewPager mPager;
private ImageView mDot1;
private ImageView mDot2;
private View mPage1;
private View mPage2;
private GridView mPage1Display;
private GridView mPage2Display;
private List<View> mViews = new ArrayList<View>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.selectgift_activity);
mPage1 = LayoutInflater.from(SelectGiftActivity.this).inflate(
R.layout.selectgift_activity_view, null);
mPage2 = LayoutInflater.from(SelectGiftActivity.this).inflate(
R.layout.selectgift_activity_view, null);
findViewById();
setListener();
init();
}
private void findViewById() {
mCancel = (Button) findViewById(R.id.selectgift_cancel);
mPager = (ViewPager) findViewById(R.id.selectgift_viewpager);
mDot1 = (ImageView) findViewById(R.id.selectgift_dot1);
mDot2 = (ImageView) findViewById(R.id.selectgift_dot2);
mPage1Display = (GridView) mPage1
.findViewById(R.id.selectgift_view_display);
mPage2Display = (GridView) mPage2
.findViewById(R.id.selectgift_view_display);
}
private void setListener() {
mCancel.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 关闭当前界面并返回数据
setResult(RESULT_CANCELED);
finish();
}
});
mPager.setOnPageChangeListener(new OnPageChangeListener() {
// 当页面改变时,修改显示的点
public void onPageSelected(int arg0) {
switch (arg0) {
case 0:
mDot1.setImageResource(R.drawable.gifts_dot_selected);
mDot2.setImageResource(R.drawable.gifts_dot_normal);
break;
case 1:
mDot2.setImageResource(R.drawable.gifts_dot_selected);
mDot1.setImageResource(R.drawable.gifts_dot_normal);
break;
}
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageScrollStateChanged(int arg0) {
}
});
mPage1Display.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 关闭当前界面,并返回礼物的数据
Intent intent = new Intent();
intent.putExtra("result",
mKXApplication.mGiftResults.get(position));
setResult(RESULT_OK, intent);
finish();
}
});
mPage2Display.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// 关闭当前界面,并返回礼物的数据
Intent intent = new Intent();
intent.putExtra("result",
mKXApplication.mGiftResults.get(position + 16));
setResult(RESULT_OK, intent);
finish();
}
});
}
private void init() {
// 获取礼物数据
getGifts();
// 添加适配器
mPage1Display.setAdapter(new GiftAdapter(0));
mPage2Display.setAdapter(new GiftAdapter(1));
mViews.add(mPage1);
mViews.add(mPage2);
mPager.setAdapter(new ViewPagerAdapter());
}
/**
* 获取礼物数据
*/
private void getGifts() {
if (mKXApplication.mGiftResults.isEmpty()) {
InputStream inputStream;
try {
inputStream = getAssets().open("data/gifts.KX");
String json = new TextUtil(mKXApplication)
.readTextFile(inputStream);
JSONArray array = new JSONArray(json);
GiftResult result = null;
for (int i = 0; i < array.length(); i++) {
result = new GiftResult();
result.setGid(array.getJSONObject(i).getString("gid"));
result.setName(array.getJSONObject(i).getString("name"));
result.setContent(array.getJSONObject(i).getString(
"content"));
mKXApplication.mGiftResults.add(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private class ViewPagerAdapter extends PagerAdapter {
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView(mViews.get(arg1));
}
public void finishUpdate(View arg0) {
}
public int getCount() {
return mViews.size();
}
public Object instantiateItem(View arg0, int arg1) {
((ViewPager) arg0).addView(mViews.get(arg1));
return mViews.get(arg1);
}
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
public Parcelable saveState() {
return null;
}
public void startUpdate(View arg0) {
}
}
private class GiftAdapter extends BaseAdapter {
private int mPagePosition;
public GiftAdapter(int pagePosition) {
mPagePosition = pagePosition;
}
public int getCount() {
return 16;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(SelectGiftActivity.this)
.inflate(R.layout.selectgift_activity_item, null);
holder = new ViewHolder();
holder.image = (ImageView) convertView
.findViewById(R.id.selectgift_item_image);
holder.title = (TextView) convertView
.findViewById(R.id.selectgift_item_title);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
GiftResult result = null;
switch (mPagePosition) {
case 0:
result = mKXApplication.mGiftResults.get(position);
break;
case 1:
result = mKXApplication.mGiftResults.get(position + 16);
break;
}
holder.image.setImageBitmap(mKXApplication.getGift(result.getGid()
+ ".jpg"));
holder.title.setText(result.getName());
return convertView;
}
class ViewHolder {
ImageView image;
TextView title;
}
}
public void onBackPressed() {
setResult(RESULT_CANCELED);
finish();
}
}