package com.dreamspace.uucampus.ui.fragment.Personal; import android.content.Intent; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; import android.widget.AdapterView; import android.widget.LinearLayout; import com.baoyz.swipemenulistview.SwipeMenu; import com.baoyz.swipemenulistview.SwipeMenuCreator; import com.baoyz.swipemenulistview.SwipeMenuItem; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.adapter.Personal.FreeGoodCollectionListAdapter; import com.dreamspace.uucampus.adapter.market.GoodsListAdapter; import com.dreamspace.uucampus.adapter.market.ShopListAdapter; import com.dreamspace.uucampus.api.ApiManager; import com.dreamspace.uucampus.common.utils.NetUtils; import com.dreamspace.uucampus.model.GoodsItem; import com.dreamspace.uucampus.model.IdleCollectionRes; import com.dreamspace.uucampus.model.ShopItem; import com.dreamspace.uucampus.model.api.AllGoodsCollectionRes; import com.dreamspace.uucampus.model.api.CommonStatusRes; import com.dreamspace.uucampus.model.api.IdleCollectionItem; import com.dreamspace.uucampus.model.api.ShopCollectionRes; import com.dreamspace.uucampus.ui.activity.FreeGoods.FreeGoodsDetailActivity; import com.dreamspace.uucampus.ui.activity.Market.GoodDetailAct; import com.dreamspace.uucampus.ui.activity.Market.ShopShowGoodsAct; import com.dreamspace.uucampus.ui.activity.Personal.MyCollectionAct; import com.dreamspace.uucampus.ui.base.BaseFragment; import com.dreamspace.uucampus.ui.dialog.ProgressDialog; import com.dreamspace.uucampus.widget.SwipeMenuLoadMoreListView; import butterknife.Bind; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by Lx on 2015/10/15. * 此fragment为“我的收藏”界面的三个收藏的fragment,因此要对此fragment的功能根据type来进行判断 */ public class CollectionFragment extends BaseFragment { @Bind(R.id.collection_smlv) SwipeMenuLoadMoreListView collectionLv; @Bind(R.id.swipe_refresh_layout) SwipeRefreshLayout swipeRefreshLayout; @Bind(R.id.content_ll) LinearLayout contentLl; private SwipeMenuCreator creator; private GoodsListAdapter goodsListAdapter; private ShopListAdapter shopListAdapter; private FreeGoodCollectionListAdapter idleListAdapter; private ProgressDialog progressDialog; private String type; private int goodsPage = 1; private int shopPage = 1; private int idlePage = 1; private boolean firstGetData = true; private int detailInPosition = -1;//进入的详情页面的list position public static final int GOOD_DETAIL = 1; public static final int SHOP_SHOW_GOODS = 2; public static final int IDLE_DETAIL = 3; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获取type,从而判断当前fragment为了展示那个界面效果 type = getArguments() == null? "null":getArguments().getString(MyCollectionAct.TYPE); } @Override public int getLayoutId() { return R.layout.fragment_my_collection; } @Override public void initViews(View view) { swipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.app_theme_color)); } @Override public void initDatas() { if(firstGetData){ if(type.equals(getString(R.string.goods))){ getGoodsCollection(); }else if(type.equals(getString(R.string.seller))){ getShopCollection(); }else if(type.equals(getString(R.string.free_goods))){ getIdleCollection(); } }else{ if(type.equals(getString(R.string.goods))){ collectionLv.setAdapter(goodsListAdapter); }else if(type.equals(getString(R.string.seller))){ collectionLv.setAdapter(shopListAdapter); }else if(type.equals(getString(R.string.free_goods))){ collectionLv.setAdapter(idleListAdapter); } } initListeners(); } private void initListeners(){ collectionLv.setOnLoadMoreListener(new SwipeMenuLoadMoreListView.OnLoadMoreListener() { @Override public void onLoadMore() { if(type.equals(getString(R.string.goods))){ goodsPage++; getGoodsCollection(); }else if(type.equals(getString(R.string.seller))){ shopPage++; getShopCollection(); }else if(type.equals(getString(R.string.free_goods))){ idlePage++; getIdleCollection(); } } }); swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { if(type.equals(getString(R.string.goods))){ goodsPage = 1; firstGetData = true; getGoodsCollection(); }else if(type.equals(getString(R.string.seller))){ shopPage = 1; firstGetData = true; getShopCollection(); }else if(type.equals(getString(R.string.free_goods))){ idlePage = 1; firstGetData = true; getIdleCollection(); } } }); //为list item添加swipe menu item creator = new SwipeMenuCreator() { @Override public void create(SwipeMenu swipeMenu) { SwipeMenuItem openItem = new SwipeMenuItem(getActivity()); openItem.setBackground(R.color.price_text_color); openItem.setWidth((int)(90*getResources().getDisplayMetrics().density)); openItem.setTitle(getString(R.string.delete)); openItem.setTitleSize((int)(8*getResources().getDisplayMetrics().density)); openItem.setTitleColor(getResources().getColor(R.color.white)); swipeMenu.addMenuItem(openItem); } }; collectionLv.setMenuCreator(creator); //为menu item添加点击事件 collectionLv.setOnMenuItemClickListener(new SwipeMenuLoadMoreListView.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(int i, SwipeMenu swipeMenu, int i1) { //i1为menu item的位置,i为listview的位置 if (i1 == 0) { initProgressDialog(); progressDialog.show(); if(type.equals(getString(R.string.goods))){ GoodsItem goodsItem = goodsListAdapter.getItem(i); goodCollectionDelete(goodsItem.getGoods_id()); }else if(type.equals(getString(R.string.seller))){ ShopItem shopItem = shopListAdapter.getItem(i); shopCollectionDelete(shopItem.getShop_id()); }else if(type.equals(getString(R.string.free_goods))){ IdleCollectionItem idleItem = idleListAdapter.getItem(i); idleCollectionDelete(idleItem.getIdle_id()); } } return false; } }); setListItemClickListeners(); } @Override protected View getLoadingTargetView() { return contentLl; } //根据type对listview的itemclick事件进行设置 private void setListItemClickListeners(){ if(type.equals(getString(R.string.goods))){ collectionLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(goodsListAdapter != null){ //将对应的good_id传入商品详情界面 Bundle bundle = new Bundle(); bundle.putString(GoodDetailAct.GOOD_ID, goodsListAdapter.getItem(position).getGoods_id()); detailInPosition = position; readyGoForResult(GoodDetailAct.class, GOOD_DETAIL, bundle); } } }); }else if(type.equals(getString(R.string.seller))){ collectionLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(shopListAdapter != null){ //将对应shop的id和name传入 Bundle bundle = new Bundle(); bundle.putString(ShopShowGoodsAct.SHOP_ID,shopListAdapter.getItem(position).getShop_id()); bundle.putString(ShopShowGoodsAct.SHOP_NAME,shopListAdapter.getItem(position).getName()); detailInPosition = position; readyGoForResult(ShopShowGoodsAct.class, SHOP_SHOW_GOODS, bundle); } } }); }else if(type.equals(getString(R.string.free_goods))){ collectionLv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(idleListAdapter != null){ Bundle bundle = new Bundle(); bundle.putString(FreeGoodsDetailActivity.EXTRA_IDLE_ID,idleListAdapter.getItem(position).getIdle_id()); detailInPosition = position; readyGoForResult(FreeGoodsDetailActivity.class,IDLE_DETAIL,bundle); } } }); } } //获取商品收藏 private void getGoodsCollection(){ if(firstGetData){ toggleShowLoading(true,null); } if(!NetUtils.isNetworkConnected(getActivity())){ showNetWorkError(); if(firstGetData){ toggleNetworkError(true,getGoodsCollectionClickListener); } collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); return; } ApiManager.getService(getActivity()).getAllGoodsCollection(goodsPage, new Callback<AllGoodsCollectionRes>() { @Override public void success(AllGoodsCollectionRes allGoodsCollectionRes, Response response) { if (allGoodsCollectionRes != null) { collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); if (allGoodsCollectionRes.getCollection().size() == 0 && goodsPage == 1) { toggleShowEmpty(true, getString(R.string.no_such_good), null); return; } //没有更多 if (allGoodsCollectionRes.getCollection().size() == 0 && goodsPage != 1) { return; } if (firstGetData) { goodsListAdapter = new GoodsListAdapter(getActivity(), allGoodsCollectionRes.getCollection(), GoodsListAdapter.ViewHolder.class); collectionLv.setAdapter(goodsListAdapter); firstGetData = false; toggleRestore(); } else { goodsListAdapter.addEntities(allGoodsCollectionRes.getCollection()); goodsListAdapter.notifyDataSetChanged(); } } } @Override public void failure(RetrofitError error) { collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); if (firstGetData) { toggleShowEmpty(true, null, getGoodsCollectionClickListener); } else { showInnerError(error); } } }); } //获取商铺收藏 private void getShopCollection(){ if(firstGetData){ toggleShowLoading(true,null); } if(!NetUtils.isNetworkConnected(getActivity())){ showNetWorkError(); if(firstGetData){ toggleNetworkError(true,getShopCollectionClickListener); } collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); return; } ApiManager.getService(getActivity()).getPersonShopCollection(shopPage, new Callback<ShopCollectionRes>() { @Override public void success(ShopCollectionRes shopCollectionRes, Response response) { if (shopCollectionRes != null) { collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); if (shopCollectionRes.getCollection().size() == 0 && shopPage == 1) { toggleShowEmpty(true, getString(R.string.no_such_shop), null); return; } if (shopCollectionRes.getCollection().size() == 0 && shopPage != 1) { showToast("没有更多"); return; } if (firstGetData) { shopListAdapter = new ShopListAdapter(getActivity(), shopCollectionRes.getCollection(), ShopListAdapter.ViewHolder.class); collectionLv.setAdapter(shopListAdapter); firstGetData = false; toggleRestore(); } else { shopListAdapter.addEntities(shopCollectionRes.getCollection()); shopListAdapter.notifyDataSetChanged(); } } } @Override public void failure(RetrofitError error) { collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); if (firstGetData) { toggleShowEmpty(true, null, getShopCollectionClickListener); } else { showInnerError(error); } } }); } //获取闲置收藏 private void getIdleCollection(){ if(firstGetData){ toggleShowLoading(true,null); } if(!NetUtils.isNetworkConnected(getActivity())){ showNetWorkError(); if(firstGetData){ toggleNetworkError(true,getShopCollectionClickListener); } collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); return; } ApiManager.getService(getActivity()).getIdleCollection(idlePage, new Callback<IdleCollectionRes>() { @Override public void success(IdleCollectionRes idleCollectionRes, Response response) { if (idleCollectionRes != null) { collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); if (idleCollectionRes.getCollection().size() == 0 && idlePage == 1) { toggleShowEmpty(true, getString(R.string.no_such_good), null); return; } if (idleCollectionRes.getCollection().size() == 0 && idlePage != 1) { showToast("没有更多"); return; } if (firstGetData) { idleListAdapter = new FreeGoodCollectionListAdapter(getActivity(), idleCollectionRes.getCollection(), FreeGoodCollectionListAdapter.ViewHolder.class); collectionLv.setAdapter(idleListAdapter); firstGetData = false; toggleRestore(); } else { idleListAdapter.addEntities(idleCollectionRes.getCollection()); idleListAdapter.notifyDataSetChanged(); } } } @Override public void failure(RetrofitError error) { collectionLv.setLoading(false); swipeRefreshLayout.setRefreshing(false); if (firstGetData) { toggleShowEmpty(true, null, getIdleCollectionClickListener); } else { showInnerError(error); } } }); } //商品收藏删除 private void goodCollectionDelete(String goodId){ if(!NetUtils.isNetworkConnected(getActivity())){ showNetWorkError(); progressDialog.dismiss(); return; } ApiManager.getService(getActivity()).deleteGoodsCollection(goodId, new Callback<CommonStatusRes>() { @Override public void success(CommonStatusRes commonStatusRes, Response response) { if (commonStatusRes != null) { progressDialog.dismiss(); showToast(getString(R.string.delete_success)); //刷新数据 goodsPage = 1; firstGetData = true; getGoodsCollection(); } } @Override public void failure(RetrofitError error) { progressDialog.dismiss(); showInnerError(error); } }); } //商铺收藏删除 private void shopCollectionDelete(String shopId){ if(!NetUtils.isNetworkConnected(getActivity())){ showNetWorkError(); progressDialog.dismiss(); return; } ApiManager.getService(getActivity()).deleteShopCollection(shopId, new Callback<CommonStatusRes>() { @Override public void success(CommonStatusRes commonStatusRes, Response response) { if (commonStatusRes != null) { progressDialog.dismiss(); showToast(getString(R.string.delete_success)); //刷新数据 shopPage = 1; firstGetData = true; getShopCollection(); } } @Override public void failure(RetrofitError error) { progressDialog.dismiss(); showInnerError(error); } }); } //闲置收藏删除 private void idleCollectionDelete(String idleId){ if(!NetUtils.isNetworkConnected(getActivity())){ showNetWorkError(); progressDialog.dismiss(); return; } ApiManager.getService(getActivity()).idleCollectionDelete(idleId, new Callback<CommonStatusRes>() { @Override public void success(CommonStatusRes commonStatusRes, Response response) { if (commonStatusRes != null) { progressDialog.dismiss(); showToast(getString(R.string.delete_success)); //刷新数据 idlePage = 1; firstGetData = true; getIdleCollection(); } } @Override public void failure(RetrofitError error) { progressDialog.dismiss(); showInnerError(error); } }); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { //若进入详情页面取消收藏后返回此页面则将相应项从列表中删除 if(requestCode == GOOD_DETAIL && resultCode == getActivity().RESULT_OK){ int state = data.getIntExtra(GoodDetailAct.GOOD_CURRENT_COLLCET_STATE,-1); if(state == 0){ //取消收藏 if(type.equals(getString(R.string.goods))){ goodsListAdapter.removeItem(detailInPosition); } // else if(type.equals(getString(R.string.seller))){ // shopListAdapter.removeItem(detailInPosition); // }else if(type.equals(getString(R.string.free_goods))){ // idleListAdapter.removeItem(detailInPosition); // } } }else if(requestCode == SHOP_SHOW_GOODS && resultCode == getActivity().RESULT_OK){ int state = data.getIntExtra(ShopShowGoodsAct.SHOP_CURRENT_COLLECT_STATE,-1); if(state == 0){ if(type.equals(getString(R.string.seller))){ shopListAdapter.removeItem(detailInPosition); } // if(type.equals(getString(R.string.goods))){ // goodsListAdapter.removeItem(detailInPosition); // }else if(type.equals(getString(R.string.seller))){ // shopListAdapter.removeItem(detailInPosition); // }else if(type.equals(getString(R.string.free_goods))){ // idleListAdapter.removeItem(detailInPosition); // } } }else if(requestCode == IDLE_DETAIL && resultCode == getActivity().RESULT_OK){ int state = data.getIntExtra(FreeGoodsDetailActivity.IDLE_CURRENT_COLLECT_STATE,-1); if(state == 0){ if(type.equals(getString(R.string.free_goods))){ idleListAdapter.removeItem(detailInPosition); } } // if(type.equals(getString(R.string.goods))){ // goodsListAdapter.removeItem(detailInPosition); // }else if(type.equals(getString(R.string.seller))){ // shopListAdapter.removeItem(detailInPosition); // }else if(type.equals(getString(R.string.free_goods))){ // idleListAdapter.removeItem(detailInPosition); // } } } private void initProgressDialog(){ if(progressDialog != null){ return; } progressDialog = new ProgressDialog(getActivity()); progressDialog.setContent(getString(R.string.in_delete)); } private View.OnClickListener getGoodsCollectionClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getGoodsCollection(); } }; private View.OnClickListener getShopCollectionClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getShopCollection(); } }; private View.OnClickListener getIdleCollectionClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getIdleCollection(); } }; }