package com.yuzhi.fine.fragment;
import android.app.Activity;
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.AbsListView;
import android.widget.AdapterView;
import android.widget.ListView;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.squareup.picasso.Picasso;
import com.yuzhi.fine.R;
import com.yuzhi.fine.http.HttpClient;
import com.yuzhi.fine.http.HttpResponseHandler;
import com.yuzhi.fine.http.RestApiResponse;
import com.yuzhi.fine.model.SearchParam;
import com.yuzhi.fine.model.SearchShop;
import com.yuzhi.fine.ui.UIHelper;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshBase;
import com.yuzhi.fine.ui.pulltorefresh.PullToRefreshListView;
import com.yuzhi.fine.ui.quickadapter.BaseAdapterHelper;
import com.yuzhi.fine.ui.quickadapter.QuickAdapter;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import okhttp3.Request;
public class BufferKnifeFragment extends Fragment {
private Activity context;
private SearchParam param;
private int pno = 1;
private boolean isLoadAll;
@Bind(R.id.listView)
PullToRefreshListView listView;
QuickAdapter<SearchShop> adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.recommend_shop_list, container, false);
ButterKnife.bind(this, view);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
context = getActivity();
initData();
initView();
loadData();
}
void initView() {
adapter = new QuickAdapter<SearchShop>(context, R.layout.recommend_shop_list_item) {
@Override
protected void convert(BaseAdapterHelper helper, SearchShop shop) {
helper.setText(R.id.name, shop.getName())
.setText(R.id.address, shop.getAddr())
.setImageUrl(R.id.logo, shop.getLogo()); // 自动异步加载图片
}
};
listView.withLoadMoreView();
listView.setAdapter(adapter);
// 下拉刷新
listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
@Override
public void onRefresh(PullToRefreshBase<ListView> refreshView) {
initData();
loadData();
}
});
// 加载更多
listView.setOnLastItemVisibleListener(new PullToRefreshBase.OnLastItemVisibleListener() {
@Override
public void onLastItemVisible() {
loadData();
}
});
// 点击事件
listView.setOnItemClickListener(new ListView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
UIHelper.showHouseDetailActivity(context);
}
});
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING) {
Picasso.with(context).pauseTag(context);
} else {
Picasso.with(context).resumeTag(context);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
}
private void initData() {
param = new SearchParam();
pno = 1;
isLoadAll = false;
}
private void loadData() {
if (isLoadAll) {
return;
}
param.setPno(pno);
listView.setLoadMoreViewTextLoading();
HttpClient.getRecommendShops(param, new HttpResponseHandler() {
@Override
public void onSuccess(RestApiResponse response) {
listView.onRefreshComplete();
List<SearchShop> list = JSONArray.parseArray(response.body, SearchShop.class);
listView.updateLoadMoreViewText(list);
isLoadAll = list.size() < HttpClient.PAGE_SIZE;
if(pno == 1) {
adapter.clear();
}
adapter.addAll(list);
pno++;
}
@Override
public void onFailure(Request request, Exception e) {
listView.onRefreshComplete();
listView.setLoadMoreViewTextError();
}
});
}
@Override
public void onResume() {
super.onResume();
Picasso.with(context).resumeTag(context);
}
@Override
public void onPause() {
super.onPause();
Picasso.with(context).pauseTag(context);
}
@Override
public void onDestroy() {
super.onDestroy();
Picasso.with(context).cancelTag(context);
}
}