package cn.coderss.fragment;
import java.util.ArrayList;
import net.tsz.afinal.FinalHttp;
import net.tsz.afinal.http.AjaxCallBack;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.special.ResideMenu.ResideMenu;
import cn.coderss.activity.TestDetailActivity;
import cn.coderss.adapter.TestAdapter;
import cn.coderss.adapter.TestfliperAdapter;
import cn.coderss.api.FssApi;
import cn.coderss.bean.CateBean;
import cn.coderss.bean.TestBean;
import cn.coderss.edu.R;
import cn.coderss.pulltorefresh.PullToRefreshBase;
import cn.coderss.pulltorefresh.PullToRefreshListView;
import cn.coderss.pulltorefresh.PullToRefreshBase.OnRefreshListener;
import cn.coderss.util.L;
import cn.coderss.util.T;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.AdapterViewFlipper;
import android.widget.ArrayAdapter;
import android.widget.Gallery;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
import android.widget.TextView;
@SuppressLint("ValidFragment")
public class TestFragment extends Fragment implements OnItemClickListener {
View mview;
private PullToRefreshListView mPullListView;
ArrayList<CateBean> cateDataList = new ArrayList<CateBean>();
ArrayList<TestBean> datalist = new ArrayList<TestBean>();
ListView mlistview;
TestAdapter myadapter;
TestfliperAdapter viewflipperAdapter;
AdapterViewFlipper viewflipper;
Context mcontext;
ResideMenu menu;
FinalHttp http;
SpinnerAdapter cateAdapter;
Spinner cate;
ProgressDialog pro;
// 分类下的试卷
String MyCate;
boolean isCate = false;
public TestFragment(Context mcontext, ResideMenu menu) {
super();
this.mcontext = mcontext;
this.menu = menu;
http = ((FssApi) mcontext.getApplicationContext()).getHttp();
}
public void createProgress() {
if (pro == null) {
pro = new ProgressDialog(mcontext).show(mcontext, "正在加载",
"您的信息正在加载,请等待.......");
}
}
public void removeProgress() {
pro.dismiss();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LayoutInflater li = LayoutInflater.from(mcontext);
mview = li.inflate(R.layout.fragment_test, null);
// 载入分类的数据
loadCateData();
// 初始化界面
initView();
// 载入主要的数据
loadData(false, 0);
return mview;
}
@SuppressLint("NewApi")
public void initView() {
mPullListView = (PullToRefreshListView) mview.findViewById(R.id.myview);
mPullListView.setPullLoadEnabled(false);
mPullListView.setScrollLoadEnabled(true);
mPullListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public void onPullDownToRefresh(
PullToRefreshBase<ListView> refreshView) {
mPullListView.onPullDownRefreshComplete();
}
@Override
public void onPullUpToRefresh(
PullToRefreshBase<ListView> refreshView) {
mPullListView.onPullUpRefreshComplete();
}
});
mPullListView.doPullRefreshing(true, 500);
mlistview = mPullListView.getRefreshableView();
mlistview.setOnItemClickListener(this);
myadapter = new TestAdapter(datalist, mcontext);
mlistview.setAdapter(myadapter);
viewflipper = (AdapterViewFlipper) mview.findViewById(R.id.fliper);
viewflipperAdapter = new TestfliperAdapter(datalist, mcontext);
viewflipper.setAdapter(viewflipperAdapter);
viewflipper.startFlipping();
}
/**
* 载入主页的数据
*/
public void loadData(final boolean refresh, int page) {
String url = FssApi.GETTEST + "&page=" + page;
if (isCate) {
if (!MyCate.equals("8080")) {
url += "&pid=" + MyCate;
}
}
L.i("我的URL:" + url);
// 判断刷新与否
if (refresh) {
datalist.removeAll(datalist);
}
http.get(url, new AjaxCallBack<Object>() {
@Override
public void onStart() {
super.onStart();
if (refresh) {
datalist.removeAll(datalist);
myadapter.notifyDataSetChanged();
}
// 创建等待
createProgress();
}
@Override
public void onSuccess(Object t) {
super.onSuccess(t);
if (t.toString().equals("No Data")) {
T.showLong(mcontext, "没有数据哦!^_^");
return;
} else {
// 数据载入成功
ArrayList<TestBean> tmp = new ArrayList<TestBean>();
tmp = new Gson().fromJson(t.toString(),
new TypeToken<ArrayList<TestBean>>() {
}.getType());
for (TestBean testBean : tmp) {
datalist.add(testBean);
}
myadapter.notifyDataSetChanged();
// 移除等待
removeProgress();
}
}
});
}
/**
* 载入分类的数据
*/
public void initCate() {
cate = (Spinner) mview.findViewById(R.id.test_category);
cateAdapter = new SpinnerAdapter() {
@Override
public void unregisterDataSetObserver(DataSetObserver arg0) {
// TODO Auto-generated method stub
}
@Override
public void registerDataSetObserver(DataSetObserver arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View v, ViewGroup arg2) {
View view = LayoutInflater.from(mcontext).inflate(
R.layout.adapter_cate, null);
TextView title = (TextView) view.findViewById(R.id.title);
title.setText(cateDataList.get(arg0).name.toString());
return view;
}
@Override
public int getItemViewType(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return cateDataList.size();
}
@Override
public View getDropDownView(int arg0, View arg1, ViewGroup arg2) {
View view = LayoutInflater.from(mcontext).inflate(
R.layout.adapter_cate, null);
TextView title = (TextView) view.findViewById(R.id.title);
L.i(cateDataList.get(arg0).name.toString());
title.setText(cateDataList.get(arg0).name.toString());
return view;
}
};
cate.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View v,
int position, long arg3) {
String result = cateDataList.get(position).name;
// 当选中分类后去执行这个分类下面的数据然后加载loadData
isCate = true;
MyCate = cateDataList.get(position).id;
L.i("现在分类的ID:" + MyCate);
loadData(true, 0);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
cate.setAdapter(cateAdapter);
}
public void loadCateData() {
http.get(((FssApi) mcontext.getApplicationContext()).GETCAT,
new AjaxCallBack<Object>() {
@Override
public void onSuccess(Object t) {
super.onSuccess(t);
cateDataList = new Gson().fromJson(t.toString(),
new TypeToken<ArrayList<CateBean>>() {
}.getType());
cateDataList.add(0, new CateBean("8080", "全部", "0",
"0", "1"));
// 初始化Spinner的数据
initCate();
}
});
}
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) {
TestBean bean = datalist.get(position);
L.i("我获得的试卷ID:" + bean.id);
Intent it = new Intent(mcontext, TestDetailActivity.class);
it.putExtra("id", bean.id);
it.putExtra("title", bean.title);
startActivity(it);
}
}