package com.vanco.abplayer.fragment; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Locale; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.vanco.abplayer.R; import com.vanco.abplayer.VideoInfoActivity; import com.vanco.abplayer.adapter.VideoListAdapter; import com.vanco.abplayer.model.Page; import com.vanco.abplayer.model.VideoItem; import com.vanco.abplayer.util.Constants; import com.vanco.abplayer.util.HttpUtil; import com.vanco.abplayer.util.URLUtil; import me.maxwin.view.IXListViewLoadMore; import me.maxwin.view.IXListViewRefreshListener; import me.maxwin.view.XListView; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Toast; /** * Fragment页面 * * @author wwj_748 * @date 2014/8/9 */ public class RankFragment extends Fragment implements IXListViewRefreshListener, IXListViewLoadMore { private XListView videoListView;// 视频列表 private View noBlogView; // 无数据时显示 private VideoListAdapter adapter;// 列表适配器 private List<VideoItem> templist; private boolean isLoad = false; // 是否加载 private int videoType = 1; // 视频类别 private Page page; // 页面引用 private String refreshDate = ""; // 刷新日期 public RankFragment(int videoType) { this.videoType = videoType; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); } @Override public void onActivityCreated(Bundle savedInstanceState) { templist = new ArrayList<VideoItem>(); VideoItem tempItem = new VideoItem(); tempItem.setAid("7"); tempItem.setTitle("[示例数据]童年动画主题曲"); tempItem.setPic("http://i0.hdslb.com/320_180/u_user/53cb3e2f7f3efd6464b82c91ea9a1236.jpg"); tempItem.setAuthor("根号⑨"); tempItem.setPlay("23333"); templist.add(tempItem); initComponent(); if (isLoad == false) { isLoad = true; // 加载数据库中的数据 List<VideoItem> list = templist; adapter.setList(list); adapter.notifyDataSetChanged(); videoListView.startRefresh(); // 开始刷新 } else { videoListView.NotRefreshAtBegin(); // 不开始刷新 } super.onActivityCreated(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.e("NewsFrag", "onCreateView"); return inflater.inflate(R.layout.fragment_donghua, null); } // 初始化 private void init() { adapter = new VideoListAdapter(getActivity()); page = new Page(); page.setPageStart(); } // 初始化组件 private void initComponent() { videoListView = (XListView) getView().findViewById(R.id.videoListView); videoListView.setAdapter(adapter);// 设置适配器 videoListView.setPullRefreshEnable(this);// 设置可下拉刷新 //videoListView.setPullLoadEnable(this);// 设置可上拉加载 // 设置列表项点击事件 videoListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 获得博客列表项 VideoItem item = (VideoItem) adapter.getItem(position - 1); Intent i = new Intent(); Bundle bundle = new Bundle(); bundle.putSerializable("videoItemdata", item); i.setClass(getActivity(), VideoInfoActivity.class); i.putExtras(bundle); startActivity(i); // 动画过渡 getActivity().overridePendingTransition(R.anim.push_left_in, R.anim.push_no); } }); noBlogView = getView().findViewById(R.id.noBlogLayout); } private class MainTask extends AsyncTask<String, Void, Integer> { @Override protected Integer doInBackground(String... params) { List<VideoItem> list=new ArrayList<VideoItem>(); try { JSONObject donghuajson = new JSONObject(HttpUtil.getHtmlString(params[0])); //动画数据解析 donghuajson =donghuajson.getJSONObject("rank"); JSONArray dougaarray=donghuajson.getJSONArray("list"); for (int i=0;i<20;i++) { VideoItem item = new VideoItem(); item.setAid(dougaarray.getJSONObject(i).getString("aid").toString()); item.setTitle(dougaarray.getJSONObject(i).getString("title").toString()); item.setPlay(dougaarray.getJSONObject(i).getString("play").toString()); item.setVideo_review(dougaarray.getJSONObject(i).getString("video_review").toString()); item.setMid(dougaarray.getJSONObject(i).getString("mid").toString()); item.setAuthor(dougaarray.getJSONObject(i).getString("author").toString()); item.setDescription(dougaarray.getJSONObject(i).getString("description").toString()); item.setCreate(dougaarray.getJSONObject(i).getString("create").toString()); item.setPic(dougaarray.getJSONObject(i).getString("pic").toString()); item.setCoins(dougaarray.getJSONObject(i).getString("coins").toString()); list.add(item); //Log.d("TAG--->", "--->"+item.getTitle()); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); return Constants.DEF_RESULT_CODE.ERROR; } // // 获取网页json数据 // String temp = HttpUtil.httpGet(params[0]); // if (temp == null) { // return Constants.DEF_RESULT_CODE.ERROR; // } // // 解析json获取列表 // List<VideoItem> list = JsoupUtil.getBlogItemList(blogType, temp); if (list.size() == 0) { return Constants.DEF_RESULT_CODE.NO_DATA; } // 刷新动作 if (params[1].equals("refresh")) { adapter.setList(list); return Constants.DEF_RESULT_CODE.REFRESH; } else {// 加载更多 adapter.addList(list); return Constants.DEF_RESULT_CODE.LOAD; } } @Override protected void onPostExecute(Integer result) { // 通知列表数据更新 adapter.notifyDataSetChanged(); switch (result) { case Constants.DEF_RESULT_CODE.ERROR: // 错误 Toast.makeText(getActivity(), "网络信号不佳", Toast.LENGTH_LONG).show(); videoListView.stopRefresh(getDate()); videoListView.stopLoadMore(); break; case Constants.DEF_RESULT_CODE.NO_DATA: // 无数据 // Toast.makeText(getActivity(), "无更多加载内容", Toast.LENGTH_LONG) // .show(); videoListView.stopLoadMore(); // noBlogView.setVisibility(View.VISIBLE); // 显示无博客 break; case Constants.DEF_RESULT_CODE.REFRESH: // 刷新 videoListView.stopRefresh(getDate()); if (adapter.getCount() == 0) { noBlogView.setVisibility(View.VISIBLE); // 显示无博客 } break; case Constants.DEF_RESULT_CODE.LOAD: videoListView.stopLoadMore(); page.addPage(); if (adapter.getCount() == 0) { noBlogView.setVisibility(View.VISIBLE); // 显示无博客 } break; default: break; } super.onPostExecute(result); } } // 加载更多时调用 @Override public void onLoadMore() { System.out.println("loadmore"); } @Override public void onRefresh() { System.out.println("refresh"); page.setPageStart(); new MainTask().execute(URLUtil.getRefreshBlogListURL(videoType), "refresh"); } public String getDate() { SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日 HH:mm", Locale.CHINA); return sdf.format(new java.util.Date()); } }