package cn.coderss.task; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import cn.coderss.bean.BBSBean; import cn.coderss.bean.TestInfo; import cn.coderss.bitmap.FinalBitmap; import cn.coderss.fragment.BBSFragment; import cn.coderss.util.Helper; import android.content.Context; import android.os.AsyncTask; import android.util.Log; public class ContentTask extends AsyncTask<String, Integer, List<BBSBean>> { private Context mContext; public int totalDataCount; private FinalBitmap fb; public ContentTask(Context context, int totalDataCount, FinalBitmap fb) { super(); mContext = context; this.totalDataCount = totalDataCount; this.fb = fb; } @Override protected List<BBSBean> doInBackground(String... params) { try { return parseNewsJSON(params[0]); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void onPostExecute(List<BBSBean> result) { if (result == null || result.size() <= 0) {// 有可能因为网络或者数据源本身无数据,如果没有此处逻辑会导致下拉刷新bar不被隐藏滨且无法刷新新数据 totalDataCount = 0; } totalDataCount = result.size(); for (BBSBean info : result) { fb.display(info); } } @Override protected void onPreExecute() { } public List<BBSBean> parseNewsJSON(String url) throws IOException, JSONException { List<BBSBean> duitangs = new ArrayList<BBSBean>(); String json = ""; if (Helper.checkConnection(mContext)) { try { json = Helper.getStringFromUrl(url); } catch (IOException e) { Log.e("IOException is : ", e.toString()); e.printStackTrace(); return duitangs; } } Log.d("MainActiivty", "json:" + json); ArrayList<BBSBean> temp = new Gson().fromJson(json, new TypeToken<ArrayList<BBSBean>>() { }.getType()); for (BBSBean bbsBean : temp) { duitangs.add(bbsBean); } return duitangs; } }