package com.todayinfo.ui.activity; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.json.JSONArray; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AbsListView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.handmark.pulltorefresh.library.PullToRefreshAdapterViewBase.OnPreRefreshingAnimListener; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshListView; import com.jinghua.todayinformation.R; import com.loopj.android.http.AsyncHttpResponseHandler; import com.todayinfo.model.GrilPhotoItem; import com.todayinfo.ui.adapter.GrilListAdapter; import com.todayinfo.ui.api.DataTask; import com.todayinfo.ui.component.fastscroll.FastScrollView; import com.todayinfo.ui.component.fastscroll.IdleListDetector; import com.todayinfo.ui.component.fastscroll.IdleListener; import com.todayinfo.utils.AsyncHttpUtil; import com.todayinfo.utils.JsonUtils; import com.todayinfo.utils.LogUtil; /** * 美女写真界面 * * @author zhou.ni 2015年3月18日 */ public class GirlPhotoActivity extends SuperActivity implements OnClickListener{ private static final String TAG = "GirlPhotoActivity"; private PullToRefreshListView grilListView; private FastScrollView fastScroller; // 快速滚动器 private IdleListener idleListener; // 空闲监听器 @SuppressWarnings("unused") private IdleListDetector mPostScrollLoader; // 空闲状态解析器 private GrilListAdapter grilListAdapter; private List<GrilPhotoItem> grilList = new ArrayList<GrilPhotoItem>(); private int pageNext = 1; private LinearLayout footerView; //最后一条listview @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fm_grilphoto); initView(); refreshData(true); } /** * 初始化控件 */ private void initView() { RelativeLayout headView = (RelativeLayout) this.findViewById(R.id.head); headView.findViewById(R.id.back_left).setOnClickListener(this);; TextView title = (TextView) headView.findViewById(R.id.head_title); title.setText("写真集"); grilListView = (PullToRefreshListView) this.findViewById(R.id.gril_list); grilListAdapter = new GrilListAdapter(mContext, grilList); grilListView.setAdapter(grilListAdapter); setupIdleListener(grilListView.getRefreshableView()); } protected void setupIdleListener(AbsListView list) { idleListener = new IdleListener(list, 0); mPostScrollLoader = new IdleListDetector(idleListener); fastScroller = (FastScrollView) grilListView.getParent(); // fastScroller.setOnIdleListDetector(mPostScrollLoader); fastScroller.setScrollListener(grilListView); grilListView.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { if (refreshView.isHeaderShown()){ pageNext = 1; refreshData(true); } } }); grilListView.setOnPreRefreshingAnimListener(new OnPreRefreshingAnimListener() { @Override public void onPreRefreshingAnim() { grilListView.setFooterLoadingViewHeaderText("加载更多图片"); } }); grilListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() { @Override public void onLastItemVisible() { if( pageNext == 0 ){ //没有下一页了 grilListView.onRefreshComplete(); if ( footerView == null ) { footerView = (LinearLayout) View.inflate(mContext, R.layout.item_pull_to_refresh_footer, null); TextView footer = (TextView) footerView.findViewById(R.id.footer); footer.setText("到底了呢-共" + grilList.size() + "条订单"); grilListView.getRefreshableView().addFooterView(footerView); } }else{ //滑动到底部自动刷新 refreshData(false); } } }); } private void refreshData(boolean clean) { dataTask = new RefreshDataTask(dataTask.getID() + 1, clean); dataTask.run(); } /** * 丢弃老数据重新刷新 * * @author longtao.li * */ class RefreshDataTask extends DataTask { boolean clean = false; // 是否清空原数据 public RefreshDataTask(int id, boolean flag) { super(id); this.clean = flag; } @Override public void run() { // 判断是不是用户的最后操作,最后任务的ID如果比此任务的ID大则丢弃请求结果 if (getID() < dataTask.getID()) { return; } else { loadGrilInfo(clean); } } } /** * 加载美女图片的数据 */ private void loadGrilInfo(final boolean flag){ String url = "http://www.6mm.cc/api/list.php?p=" + pageNext; AsyncHttpUtil.get(url, new AsyncHttpResponseHandler() { @Override public void onSuccess(int code, Header[] headers, byte[] responseBody) { if ( footerView!=null ){ grilListView.getRefreshableView().removeFooterView(footerView); footerView = null; } grilListView.onRefreshComplete(); if ( responseBody!=null && responseBody.length>0 ){ try { JSONArray jsonArray = new JSONArray(new String(responseBody)); List<GrilPhotoItem> list = JsonUtils.getInstance(GrilPhotoItem.class, jsonArray); if ( list!=null && list.size()>0 ){ if ( flag ) { grilList.clear(); } LogUtil.i(TAG, list.get(0).toString()); pageNext ++; grilList.addAll(list); grilListAdapter.notifyDataSetChanged(); } else { pageNext = 0; } } catch (Exception e) { e.printStackTrace(); } } } @Override public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) { Toast.makeText(mContext, "请检查您的网络", Toast.LENGTH_SHORT).show(); } }); } @Override public void retry() { } @Override public void netError() { } @Override public void pwdError() { } @Override protected void obtainInfo() { } @Override public void onClick(View v) { switch (v.getId()) { case R.id.back_left: finish(); break; default: break; } } }