package com.dreamspace.uucampus.ui.fragment.FreeGoods; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.view.MotionEvent; import android.view.View; import android.widget.AdapterView; import com.dreamspace.uucampus.R; import com.dreamspace.uucampus.adapter.FreeGoods.FreeGoodsItemAdapter; import com.dreamspace.uucampus.common.utils.TLog; import com.dreamspace.uucampus.model.IdleItem; import com.dreamspace.uucampus.ui.activity.FreeGoods.FreeGoodsActivity; import com.dreamspace.uucampus.ui.activity.FreeGoods.FreeGoodsDetailActivity; import com.dreamspace.uucampus.ui.base.BaseLazyFragment; import com.dreamspace.uucampus.widget.LoadMoreListView; import java.util.List; import butterknife.Bind; /** * Created by Administrator on 2015/8/25 0025. */ public abstract class FreeGoodsLazyListFragment<T> extends BaseLazyFragment { @Bind(R.id.load_more_lv) LoadMoreListView moreListView; private FreeGoodsItemAdapter mAdapter; @Bind(R.id.swiperefresh_id) SwipeRefreshLayout mSwipeRefreshLayout; public static final int ADD=2; public static final int LOAD=1; public static final int REQUEST_CODE=1; public static final int RESULT_CODE=200; public String order = null; //popupWindow对应选中的order public boolean alreadyGetData = false;//判断是否已经获取了数据 @Override protected void onFirstUserVisible() { if(!alreadyGetData){ //若果为false,还在加载数据 order = ((FreeGoodsActivity)getActivity()).getOrder(); getInitData(); }else { if(mAdapter != null){ moreListView.setAdapter(mAdapter); TLog.i("mApdater:", mAdapter.getCount() + ""); }else{ toggleShowEmpty(true,getString(R.string.no_such_good),getGoodsClickListener); } } } @Override protected void onUserVisible() { //排列方式变化,重新获取数据 if(!order.equals(((FreeGoodsActivity)getActivity()).getOrder())){ order = ((FreeGoodsActivity)getActivity()).getOrder(); getInitData(); } } @Override protected void onUserInvisible() { } @Override protected View getLoadingTargetView() { return mSwipeRefreshLayout; } @Override protected void initViewsAndEvents() { mSwipeRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.app_theme_color)); // mSwipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright, // android.R.color.holo_green_light, android.R.color.holo_orange_light, // android.R.color.holo_red_light); mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { onPullDown(); } }); moreListView.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() { @Override public void onLoadMore() { onPullUp(); } }); moreListView.setOnTouchListener(new View.OnTouchListener() { float y = 0; @Override public boolean onTouch(View view, MotionEvent motionEvent) { switch (motionEvent.getAction()) { case MotionEvent.ACTION_DOWN: y = motionEvent.getY(); break; case MotionEvent.ACTION_MOVE: //向下滚动式隐藏btn,向上显示 if (motionEvent.getY() - y > 0) { ((FreeGoodsActivity) getActivity()).setFloatActionBtnVisible(true); } else { ((FreeGoodsActivity) getActivity()).setFloatActionBtnVisible(false); } y = motionEvent.getY(); break; } return false; } }); // moreListView.onScroll(); initDatas(); } public void initDatas() { moreListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String idle_id = onItemPicked((T) mAdapter.getItem(position), position); Bundle bundle = new Bundle(); bundle.putString(FreeGoodsDetailActivity.EXTRA_IDLE_ID,idle_id); readyGoForResult(FreeGoodsDetailActivity.class, REQUEST_CODE, bundle); } }); } protected abstract void getInitData(); protected abstract String onItemPicked(T item, int position); protected abstract void onPullUp(); protected abstract void onPullDown(); @Override protected int getContentViewLayoutID() { return R.layout.base_list_fragment; } public void onPullUpFinished() { moreListView.setLoading(false); } public void onPullDownFinished(){ mSwipeRefreshLayout.setRefreshing(false); } public void refreshDate(List<IdleItem> mEntities,int type) { switch (type){ case LOAD: mAdapter=new FreeGoodsItemAdapter(getActivity()); mAdapter.setmEntities(mEntities); moreListView.setAdapter(mAdapter); break; case ADD: mAdapter.addEntities(mEntities); break; } mAdapter.notifyDataSetChanged(); } public View.OnClickListener getGoodsClickListener = new View.OnClickListener() { @Override public void onClick(View v) { getInitData(); } }; }