package com.yuyh.sprintnba.ui.fragment; import android.os.Build; import android.os.Bundle; import android.view.View; import android.view.ViewTreeObserver; import android.widget.ListView; import android.widget.RelativeLayout; import com.yuyh.sprintnba.R; import com.yuyh.sprintnba.base.BaseLazyFragment; import com.yuyh.sprintnba.event.RefreshCompleteEvent; import com.yuyh.sprintnba.event.RefreshEvent; import com.yuyh.sprintnba.http.bean.match.LiveDetail; import com.yuyh.sprintnba.support.OnLvScrollListener; import com.yuyh.sprintnba.ui.adapter.MatchLiveAdapter; import com.yuyh.sprintnba.ui.presenter.impl.MatchLivePresenter; import com.yuyh.sprintnba.ui.view.MatchLiveView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import java.util.ArrayList; import java.util.List; import butterknife.ButterKnife; import butterknife.InjectView; /** * @author yuyh. * @date 16/6/5. */ public class MatchLiveFragment extends BaseLazyFragment implements MatchLiveView { @InjectView(R.id.refresh) RelativeLayout materialRefreshLayout; @InjectView(R.id.snlScrollView) ListView lvMatchLive; @InjectView(R.id.emptyView) View emptyView; @InjectView(R.id.view_line) View viewLine; private int mListViewHeight = 0; private List<LiveDetail.LiveContent> list = new ArrayList<>(); private MatchLiveAdapter adapter; private MatchLivePresenter presenter; private String mid; private boolean isVisibleToUser; // 是否可见。可见才进行刷新 public static MatchLiveFragment newInstance(String mid) { Bundle args = new Bundle(); args.putString("mid", mid); MatchLiveFragment fragment = new MatchLiveFragment(); fragment.setArguments(args); return fragment; } @Override protected void onCreateViewLazy(Bundle savedInstanceState) { super.onCreateViewLazy(savedInstanceState); setContentView(R.layout.fragment_match_live); EventBus.getDefault().register(this); initData(); } private void initData() { showLoadingDialog(); mid = getArguments().getString("mid"); adapter = new MatchLiveAdapter(list, mActivity, R.layout.item_list_match_live); lvMatchLive.setAdapter(adapter); lvMatchLive.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) { lvMatchLive.getViewTreeObserver().removeOnGlobalLayoutListener(this); } else { lvMatchLive.getViewTreeObserver().removeGlobalOnLayoutListener(this); } mListViewHeight = lvMatchLive.getHeight(); lvMatchLive.setOnScrollListener(new OnLvScrollListener(mListViewHeight) { @Override public void onBottom() { presenter.getMoreContent(); } }); } }); presenter = new MatchLivePresenter(mActivity, this, mid); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); this.isVisibleToUser = isVisibleToUser; if (isVisibleToUser && mActivity != null) { mActivity.invalidateOptionsMenu(); } } @Override public void addList(List<LiveDetail.LiveContent> detail, boolean front) { viewLine.setVisibility(View.VISIBLE); EventBus.getDefault().post(new RefreshCompleteEvent()); if (front) list.addAll(0, detail); else list.addAll(detail); adapter.notifyDataSetChanged(); hideLoadingDialog(); } @Override public void showError(String message) { EventBus.getDefault().post(new RefreshCompleteEvent()); hideLoadingDialog(); lvMatchLive.setEmptyView(emptyView); } @Subscribe public void onEventMainThread(RefreshEvent event) { if (isVisibleToUser) { presenter.shutDownTimerTask(); presenter.initialized(); } } @Override protected void onPauseLazy() { super.onPauseLazy(); presenter.shutDownTimerTask(); } @Override protected void onResumeLazy() { super.onResumeLazy(); presenter.shutDownTimerTask(); presenter.initialized(); } @Override protected void onDestroyViewLazy() { super.onDestroyViewLazy(); EventBus.getDefault().unregister(this); presenter.shutDownTimerTask(); } }