package com.dreamspace.uucampus.ui.fragment.Market; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; import android.widget.AdapterView; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.adapter.market.GoodsListAdapter; import com.dreamspace.uucampus.api.ApiManager; import com.dreamspace.uucampus.common.utils.NetUtils; import com.dreamspace.uucampus.common.utils.PreferenceUtils; import com.dreamspace.uucampus.common.utils.TLog; import com.dreamspace.uucampus.model.api.SearchGoodsRes; import com.dreamspace.uucampus.ui.activity.Market.FastInAct; import com.dreamspace.uucampus.ui.activity.Market.GoodDetailAct; import com.dreamspace.uucampus.ui.base.BaseLazyFragment; import com.dreamspace.uucampus.widget.LoadMoreListView; import butterknife.Bind; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by Lx on 2015/9/22. * 首页快速进入用来展示商品的fragment */ public class ShowGoodsFragment extends BaseLazyFragment { @Bind(R.id.swiperefresh_id) SwipeRefreshLayout swipeRefreshLayout; @Bind(R.id.load_more_lv) LoadMoreListView loadMoreListView; private String label; private String category; private int goodPage = 1;//当前good的page private boolean fragmentDestory = false; private boolean alreadyGetData = false;//判断是否已经获取了数据 private boolean firstGetGoods = true;//判断是不是第一次获取数据,第一次获取数据需要显示“加载中”界面 private GoodsListAdapter adapter; private String order; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获取从activity传递过来的category和label,根据这两个属性获取自己要获取的内容 label = getArguments() == null? "null":getArguments().getString(FastInAct.LABEL); category = getArguments() == null? "null":getArguments().getString(FastInAct.CATEGORY); } @Override protected void onFirstUserVisible() { swipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.app_theme_color)); //避免有数据重新加载数据 if(!alreadyGetData){ order = ((FastInAct)getActivity()).getOrder(); getGoods(); }else{ if(adapter != null){ loadMoreListView.setAdapter(adapter); }else{ toggleShowEmpty(true,getString(R.string.no_such_shop),getGoodsClickListener); } } } @Override protected void onUserVisible() { //排列方式变化,重新获取数据 if(!order.equals(((FastInAct)getActivity()).getOrder())){ order = ((FastInAct)getActivity()).getOrder(); firstGetGoods = true; goodPage = 1; getGoods(); } } @Override protected void onUserInvisible() { } @Override protected View getLoadingTargetView() { return swipeRefreshLayout; } @Override protected void initViewsAndEvents() { loadMoreListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Bundle bundle = new Bundle(); bundle.putString(GoodDetailAct.GOOD_ID, adapter.getItem(position).getGoods_id()); readyGo(GoodDetailAct.class, bundle); } }); loadMoreListView.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() { @Override public void onLoadMore() { loadMoreListView.setLoading(true); goodPage++; getGoods(); } }); swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { firstGetGoods = true; goodPage = 1; getGoods(); } }); } @Override protected int getContentViewLayoutID() { return R.layout.fragment_show_items; } //order需要根据用户的选择传递进来 private void getGoods(){ if(firstGetGoods){ toggleShowLoading(true,null); } if(!NetUtils.isNetworkConnected(mContext)){ showNetWorkError(); if(firstGetGoods){ toggleNetworkError(true,getGoodsClickListener); } loadMoreListView.setLoading(false); swipeRefreshLayout.setRefreshing(false); return; } ApiManager.getService(mContext).searchGoods(null, order, category, label, null, null, goodPage, PreferenceUtils.getString(getActivity(),PreferenceUtils.Key.LOCATION), new Callback<SearchGoodsRes>() { @Override public void success(SearchGoodsRes searchGoodsRes, Response response) { if (searchGoodsRes != null && !fragmentDestory) { alreadyGetData = true; loadMoreListView.setLoading(false); swipeRefreshLayout.setRefreshing(false); if (goodPage == 1 && searchGoodsRes.getResult().size() == 0) { toggleShowEmpty(true, getString(R.string.no_such_good), null); adapter = null; return; } if (goodPage != 1 && searchGoodsRes.getResult().size() == 0) { //没有更多 return; } if (firstGetGoods) { adapter = new GoodsListAdapter(mContext, searchGoodsRes.getResult(), GoodsListAdapter.ViewHolder.class); loadMoreListView.setAdapter(adapter); toggleRestore(); firstGetGoods = false; } else { adapter.addEntities(searchGoodsRes.getResult()); adapter.notifyDataSetChanged(); } } } @Override public void failure(RetrofitError error) { if(!fragmentDestory){ alreadyGetData = false; if(goodPage == 1){ toggleShowEmpty(true, null, getGoodsClickListener); }else{ showInnerError(error); } loadMoreListView.setLoading(false); swipeRefreshLayout.setRefreshing(false); } } }); } //当更换排序方式时,activity对调用此方法 public void orderChange(String order){ firstGetGoods = true; goodPage = 1; this.order = order; getGoods(); } private View.OnClickListener getGoodsClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getGoods(); } }; @Override public void onDestroy() { fragmentDestory = true; super.onDestroy(); } }