package com.youzi.zhidu.fragment; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import net.tsz.afinal.FinalDb; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.Toast; import com.google.gson.Gson; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import com.koushikdutta.async.future.FutureCallback; import com.koushikdutta.ion.Ion; import com.umeng.analytics.MobclickAgent; import com.youzi.zhidu.R; import com.youzi.zhidu.adapter.ArticleAdapter; import com.youzi.zhidu.adapter.HomeAdapter; import com.youzi.zhidu.bean.Article; import com.youzi.zhidu.bean.HomeBean; import com.youzi.zhidu.commont.APIURL; import com.youzi.zhidu.lib.NetWorkUtil; public class HomeFragment extends Fragment implements android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener { private HomeAdapter adapter; ListView listView; private CountDownTimer timer; ProgressBar progressbar; SwipeRefreshLayout swipe; List<HomeBean> sections; FinalDb db; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_home, container, false); initView(view); return view; } private void initView(View view) { db = FinalDb.create(getActivity(), false); progressbar = (ProgressBar) view.findViewById(R.id.progressbar); listView = (ListView) view.findViewById(R.id.listView); swipe = (SwipeRefreshLayout) view.findViewById(R.id.swipe); swipe.setOnRefreshListener(this); // ����ˢ�µ���ʽ swipe.setColorSchemeResources(android.R.color.holo_red_light, android.R.color.holo_green_light, android.R.color.holo_blue_bright, android.R.color.holo_orange_light); timer = new CountDownTimer(9 * 100, 100) { @Override public void onTick(long millisUntilFinished) { long a = millisUntilFinished / 100; if (a == 1) { getData(APIURL.SERVER_URL + "item_a.json"); Log.e("APIURL:", APIURL.SERVER_URL + "item_a.json"); adapter = new HomeAdapter(getActivity(), listView); listView.setAdapter(adapter); } else { progressbar.setVisibility(View.VISIBLE); } } @Override public void onFinish() { } }; sections = db.findAllByWhere(HomeBean.class, "1=1", "id"); if (NetWorkUtil.networkCanUse(getActivity())) { timer.start(); } else { progressbar.setIndeterminateDrawable(getResources().getDrawable(R.drawable.net_error_loading)); if (sections != null || sections.size() != 0) { adapter = new HomeAdapter(getActivity(), listView); listView.setAdapter(adapter); adapter.resetData(sections); } } } private void getData(String jsonurl) { if (isAdded() == true) { Ion.with(getActivity(), jsonurl).asJsonObject() .setCallback(new FutureCallback<JsonObject>() { @Override public void onCompleted(Exception e, JsonObject result) { Log.e("-------------> ", "" + result); if (e != null) { return; } String code = result.get("code").getAsString(); if ("200".equals(code)) { Log.e("", "200"); Type type = new TypeToken<List<HomeBean>>() { }.getType(); Gson gson = new Gson(); sections = gson.fromJson(result.get("msg"), type); adapter.resetData(sections); progressbar.setVisibility(View.GONE); add(sections); } else if ("401".equals(code)) { } else { Toast.makeText(getActivity(), result.get("msg").getAsString(), 1) .show(); } } }); } } // public void onResume() { // super.onResume(); // MobclickAgent.onPageStart("MainScreen"); //ͳ��ҳ�� // } // public void onPause() { // super.onPause(); // MobclickAgent.onPageEnd("MainScreen"); // } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); // MobclickAgent.onPageStart("MainScreen"); //ͳ��ҳ�� MobclickAgent.onResume(getActivity()); // ͳ��ʱ�� } @Override public void onPause() { // TODO Auto-generated method stub super.onPause(); MobclickAgent.onPause(getActivity()); } @Override public void onRefresh() { new Handler().postDelayed(new Runnable() { public void run() { if (NetWorkUtil.networkCanUse(getActivity())) { getData(APIURL.SERVER_URL + "item_a.json"); adapter = new HomeAdapter(getActivity(), listView); listView.setAdapter(adapter); } else { Toast.makeText(getActivity(), "��������ʧ��..", 1).show(); progressbar.setVisibility(View.GONE); if (sections != null || sections.size() != 0) { adapter = new HomeAdapter(getActivity(), listView); listView.setAdapter(adapter); adapter.resetData(sections); } } swipe.setRefreshing(false); } }, 1500); } private void add(List<HomeBean> a) { if (sections != null && sections.size() > 0) { for (HomeBean tmpSection : a) { HomeBean oldSection = db .findById(tmpSection.id, HomeBean.class); if (oldSection == null) { db.save(tmpSection); } else { db.update(tmpSection); } } } } }