package com.stdnull.v2api.ui; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.skyinu.annotations.BindView; import com.skyinu.gradlebutterknife.GradleButterKnife; import com.stdnull.baselib.common.CFLog; import com.stdnull.v2api.R; import com.stdnull.v2api.R2; import com.stdnull.v2api.injection.components.DaggerV2MainComponent; import com.stdnull.v2api.injection.modules.V2MainModule; import com.stdnull.v2api.model.V2ExBean; import com.stdnull.v2api.presenter.V2MainPresenter; import com.stdnull.v2api.ui.adapter.ContentListAdapter; import com.stdnull.v2api.ui.uibehaviour.IV2MainFragment; import java.util.List; import javax.inject.Inject; /** * Created by chen on 2017/8/20. */ public class V2MainFragment extends Fragment implements IV2MainFragment, SwipeRefreshLayout.OnRefreshListener { private View mRootView; @BindView(R2.id.v2_content_list_view) RecyclerView mContentRecycleView; @BindView(R2.id.v2_refresh_view) SwipeRefreshLayout mRefreshLayout; @Inject V2MainPresenter mV2MainPresenter; @Inject ContentListAdapter mContentListAdapter; public static V2MainFragment newInstance() { V2MainFragment fragment = new V2MainFragment(); Bundle args = new Bundle(); fragment.setArguments(args); return fragment; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); DaggerV2MainComponent. builder() .v2MainModule(new V2MainModule(this)) .build().inject(this); mV2MainPresenter.restore(savedInstanceState); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mV2MainPresenter.save(outState); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); mRootView = inflater.inflate(R.layout.v2_main_fragment_layout, container, false); GradleButterKnife.bind(this, mRootView); initUI(); return mRootView; } private void initUI(){ mRefreshLayout.setColorSchemeColors(getResources().getColor(R.color.colorAccent), getResources().getColor(R.color.colorPrimary)); mRefreshLayout.setOnRefreshListener(this); mContentRecycleView.setLayoutManager(new LinearLayoutManager(getContext())); mContentRecycleView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL)); mContentRecycleView.setAdapter(mContentListAdapter); mV2MainPresenter.requestV2FeedData(false); mContentRecycleView.addOnScrollListener(new TopItemListener()); } @Override public void showContent(List<V2ExBean> content) { if(content.isEmpty()){ return; } mContentListAdapter.setContents(content); mContentListAdapter.notifyDataSetChanged(); } @Override public Context getActivityContext() { return getActivity(); } @Override public void startRefresh() { mRefreshLayout.setRefreshing(true); } @Override public void stopRefresh() { mRefreshLayout.setRefreshing(false); } @Override public void onRefresh() { mV2MainPresenter.requestV2FeedData(true); } class TopItemListener extends RecyclerView.OnScrollListener{ @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager(); if (layoutManager instanceof LinearLayoutManager) { LinearLayoutManager linearManager = (LinearLayoutManager) layoutManager; int firstItemPosition = linearManager.findFirstVisibleItemPosition(); if(firstItemPosition == 0 || mContentListAdapter.getItemCount() == 0){ mRefreshLayout.setEnabled(true); CFLog.e("V2MainFragment", "arrive top"); } else{ mRefreshLayout.setEnabled(false); } } } } }