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.ShopListAdapter; 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.CategoryItem; import com.dreamspace.uucampus.model.ShopItem; import com.dreamspace.uucampus.model.api.SearchShopRes; import com.dreamspace.uucampus.ui.MarketFragment; 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/9/21. */ public class ShowShopsFragment 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 CategoryItem categoryItem; private int shopPage = 1; private boolean fragmentDestroy = false; private boolean firstGetData = true; private boolean alreadyGetData = false; private ShopListAdapter adapter; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); categoryItem = getArguments().getParcelable(MarketFragment.CATEGORY); } @Override protected void onFirstUserVisible() { swipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.app_theme_color)); if(!alreadyGetData){ getShops(); }else{ if(adapter != null){ loadMoreListView.setAdapter(adapter); TLog.i("mApdater:", adapter.getCount() + ""); }else{ toggleShowEmpty(true,getString(R.string.no_such_shop),getShopsClickListener); } } } @Override protected void onUserVisible() { } @Override protected void onUserInvisible() { } @Override protected View getLoadingTargetView() { return contentLl; } @Override protected void initViewsAndEvents() { // System.out.println(categoryItem + "ie"); loadMoreListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(adapter != null){ //启动商家页面,并传入对应商家的shopid,shopname ShopItem shopInfo = adapter.getItem(position); Bundle bundle = new Bundle(); bundle.putString(ShopShowGoodsAct.SHOP_ID,shopInfo.getShop_id()); bundle.putString(ShopShowGoodsAct.SHOP_NAME,shopInfo.getName()); readyGo(ShopShowGoodsAct.class, bundle); } } }); loadMoreListView.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() { @Override public void onLoadMore() { loadMoreListView.setLoading(true); shopPage++; getShops(); } }); swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { shopPage = 1; firstGetData = true; getShops(); } }); } @Override protected int getContentViewLayoutID() { return R.layout.fragment_show_items; } private void getShops(){ toggleShowLoading(true, null); if(!NetUtils.isNetworkConnected(mContext)){ showNetWorkError(); //若还没有取得数据则显示网络错误界面 if(firstGetData){ toggleNetworkError(true, getShopsClickListener); } loadMoreListView.setLoading(false); swipeRefreshLayout.setRefreshing(false); return; } ApiManager.getService(mContext).searchShop("", "", categoryItem.getName(), shopPage, PreferenceUtils.getString(getActivity(),PreferenceUtils.Key.LOCATION),new Callback<SearchShopRes>() { @Override public void success(SearchShopRes searchShopRes, Response response) { if(searchShopRes != null && !fragmentDestroy){ alreadyGetData = true; loadMoreListView.setLoading(false); swipeRefreshLayout.setRefreshing(false); //没有数据 if(shopPage == 1 && searchShopRes.getResult().size() == 0){ toggleShowEmpty(true,getString(R.string.no_such_shop),null); adapter = null; return; } //没有更多 if(shopPage != 1 && searchShopRes.getResult().size() == 0){ return; } //若还没取得过数据则取消加载界面 if(firstGetData){ adapter = new ShopListAdapter(mContext,searchShopRes.getResult(),ShopListAdapter.ViewHolder.class); loadMoreListView.setAdapter(adapter); toggleRestore(); //已取得了数据 firstGetData = false; }else{ adapter.addEntities(searchShopRes.getResult()); adapter.notifyDataSetChanged(); } } } @Override public void failure(RetrofitError error) { if(!fragmentDestroy){ alreadyGetData = false; if(shopPage == 1){ toggleShowEmpty(true, null, getShopsClickListener); }else{ showInnerError(error); } loadMoreListView.setLoading(false); swipeRefreshLayout.setRefreshing(false); } } }); } private View.OnClickListener getShopsClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getShops(); } }; @Override public void onDestroy() { super.onDestroy(); fragmentDestroy = true; } }