package com.dreamspace.uucampus.ui.activity.FreeGoods; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.RelativeLayout; import com.dreamspace.uucampus.R; 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.api.AllCategoryRes; import com.dreamspace.uucampus.ui.activity.Login.LoginActivity; import com.dreamspace.uucampus.ui.activity.Search.SearchResultActivity; import com.dreamspace.uucampus.ui.base.AbsActivity; import com.dreamspace.uucampus.ui.fragment.FreeGoods.FreeGoodsLazyDataFragment; import com.dreamspace.uucampus.ui.popupwindow.FreeGoodsSortPopupWindow; import com.dreamspace.uucampus.widget.smartlayout.SmartTabLayout; import com.melnykov.fab.FloatingActionButton; import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItemAdapter; import com.ogaclejapan.smarttablayout.utils.v4.FragmentPagerItems; import java.util.ArrayList; import java.util.List; import butterknife.Bind; import retrofit.Callback; import retrofit.RetrofitError; import retrofit.client.Response; /** * Created by wufan on 2015/9/19. */ public class FreeGoodsActivity extends AbsActivity { @Bind(R.id.free_goods_publish_btn) FloatingActionButton mPublishBtn; @Bind(R.id.free_goods_shadow_view) View shadowView; @Bind(R.id.free_goods_view_pager) ViewPager mViewPager; @Bind(R.id.free_goods_smart_tab) SmartTabLayout mSmartTabLayout; @Bind(R.id.content_rl) RelativeLayout contentRl; FreeGoodsSortPopupWindow popupWindow; private String order="last_update"; private boolean bIdleAct=true; private boolean haveGood = false; private FragmentPagerItemAdapter pagerAdpater; public static final String CATEGORY = "category"; public static final String EXTRA_ORDER="order"; public static final String EXTRA_IDLE_ACT="idle_activity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected int getContentView() { return R.layout.activity_free_goods; } @Override protected void prepareDatas() { } @Override protected void initViews() { initTabs(); popupWindow = new FreeGoodsSortPopupWindow(this, shadowView); initListeners(); mPublishBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(!PreferenceUtils.hasKey(FreeGoodsActivity.this,PreferenceUtils.Key.LOGIN) || !PreferenceUtils.getBoolean(FreeGoodsActivity.this,PreferenceUtils.Key.LOGIN)){ //未登录,需先登录 readyGo(LoginActivity.class); }else{ readyGo(FreeGoodsPublishFirstActivity.class); } } }); } @Override protected View getLoadingTargetView() { return contentRl; } private void initListeners() { popupWindow.setMostPopularOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.popupItemSetSelect(0); //必须调用getpage才能获取准确的fragment,getitem获取的不对 order="view_number"; ((FreeGoodsLazyDataFragment) pagerAdpater.getPage(mViewPager.getCurrentItem())).orderChange(order); } }); popupWindow.setRecentPublishOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.popupItemSetSelect(1); order="last_update"; ((FreeGoodsLazyDataFragment)pagerAdpater.getPage(mViewPager.getCurrentItem())).orderChange(order); } }); popupWindow.setCheapestOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.popupItemSetSelect(2); order = "price"; ((FreeGoodsLazyDataFragment) pagerAdpater.getPage(mViewPager.getCurrentItem())).orderChange(order); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_free_goods, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.free_goods_action_sort) { if (popupWindow != null) { popupWindow.showAsDropDown(mToolBar); } } if(id==R.id.free_goods_action_search){ readyGo(SearchResultActivity.class); } return super.onOptionsItemSelected(item); } @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem sort = menu.findItem(R.id.free_goods_action_sort); if(haveGood){ sort.setVisible(true); }else{ //没有商品则不现实排序图标 sort.setVisible(false); } return super.onPrepareOptionsMenu(menu); } @Override public void onBackPressed() { if(popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); }else{ super.onBackPressed(); } } private void initTabs() { toggleShowLoading(true, null); final List<String> items = new ArrayList<String>(); if(NetUtils.isNetworkConnected(getApplicationContext())){ ApiManager.getService(getApplicationContext()).getAllIdleCategory(new Callback<AllCategoryRes>() { @Override public void success(AllCategoryRes allCategoryRes, Response response) { TLog.i("idle tabs:", response.getReason()); if(allCategoryRes.getCategory().size() == 0){ haveGood = false; invalidateOptionsMenu(); }else{ haveGood = true; invalidateOptionsMenu(); for(CategoryItem categoryItem :allCategoryRes.getCategory()){ items.add(categoryItem.getName()); } initFragment(items); //初始化viewpager与smartLayout toggleRestore(); } } @Override public void failure(RetrofitError error) { showInnerError(error); toggleShowEmpty(true,getString(R.string.no_such_good),null); } }); }else { showNetWorkError(); toggleNetworkError(true,getIdleCategoryClickListener); } } void initFragment(List<String> items) { FragmentPagerItems.Creator creator = FragmentPagerItems.with(this); for(String titleTab:items){ Bundle bundle = new Bundle(); bundle.putString(CATEGORY, titleTab); bundle.putString(EXTRA_ORDER,order); bundle.putBoolean(EXTRA_IDLE_ACT,bIdleAct); creator.add(titleTab, FreeGoodsLazyDataFragment.class, bundle); } pagerAdpater = new FragmentPagerItemAdapter(getSupportFragmentManager(), creator.create()); // items = Arrays.asList(ShareData.freeGoodsCategorys); // pagerAdpater = new FragmentStatePagerItemAdapter(getSupportFragmentManager(), // FragmentPagerItems.with(this) // .add(items.get(0), FreeGoodsLazyDataFragment.class) // .add(items.get(1), FreeGoodsLazyDataFragment.class) // .add(items.get(2), FreeGoodsLazyDataFragment.class) // .add(items.get(3), FreeGoodsLazyDataFragment.class) // .create()); mViewPager.setAdapter(pagerAdpater); mSmartTabLayout.setViewPager(mViewPager); } private View.OnClickListener getIdleCategoryClickListener = new View.OnClickListener() { @Override public void onClick(View view) { initTabs(); } }; public void setFloatActionBtnVisible(boolean visible){ if(mPublishBtn != null){ if(visible){ mPublishBtn.setVisibility(View.VISIBLE); }else{ mPublishBtn.setVisibility(View.INVISIBLE); } } } public String getOrder(){ return order; } }