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 android.widget.LinearLayout; 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.model.api.SearchGoodsRes; import com.dreamspace.uucampus.ui.activity.Market.GoodDetailAct; import com.dreamspace.uucampus.ui.activity.Market.ShopShowGoodsAct; 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/11/2. * 进入店铺页面用来展示商品的fragment */ public class ShopShowGoodsFragment extends BaseLazyFragment{ @Bind(R.id.swiperefresh_id) SwipeRefreshLayout swipeRefreshLayout; @Bind(R.id.load_more_lv) LoadMoreListView loadMoreListView; @Bind(R.id.content_ll) LinearLayout contentLl; private String shopId;//当前商铺的shopid private String group;//当前group的名称 private int goodPage = 1;//当前good的page private boolean fragmentDestory = false; private boolean alreadyGetData = false; private boolean firstGetGoods = true;//判断是不是第一次获取数据,第一次获取数据需要显示“加载中”界面 private GoodsListAdapter adapter; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获取从activity传递过来的shopid和group,根据这两个属性获取自己要获取的内容 shopId = getArguments() == null? "null":getArguments().getString(ShopShowGoodsAct.SHOP_ID); group = getArguments() == null? "null":getArguments().getString(ShopShowGoodsAct.GROUP); } @Override protected void onFirstUserVisible() { swipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.app_theme_color)); if(!alreadyGetData){ getGoods(); }else{ if(adapter != null){ loadMoreListView.setAdapter(adapter); }else{ toggleShowEmpty(true,getString(R.string.no_such_shop),getGoodsClickListener); } } } @Override protected void onUserVisible() { } @Override protected void onUserInvisible() { } @Override protected View getLoadingTargetView() { return contentLl; } @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; } //获取商品 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, null, null, null, group, shopId, 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); } } }); } private View.OnClickListener getGoodsClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getGoods(); } }; @Override public void onDestroy() { fragmentDestory = true; super.onDestroy(); } }