protected void initViews(View view) {
    mErrorLayout = (EmptyLayout) view.findViewById(R.id.error_layout);
    mErrorLayout.setOnLayoutClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            mCurrentPage = 0;
            mState = STATE_REFRESH;
            mErrorLayout.setErrorType(EmptyLayout.NETWORK_LOADING);
            requestData(true);
          }
        });
    mSwipeRefresh = (SwipeRefreshLayout) view.findViewById(R.id.srl_refresh);
    mSwipeRefresh.setColorSchemeResources(
        R.color.main_green, R.color.main_gray, R.color.main_black, R.color.main_purple);
    mSwipeRefresh.setOnRefreshListener(
        new OnRefreshListener() {
          @Override
          public void onRefresh() {
            refresh();
          }
        });
    mRecyclerView = (RecyclerView) view.findViewById(R.id.recycleView);
    mRecyclerView.setOnScrollListener(mScrollListener);
    if (isNeedListDivider()) {
      mRecyclerView.addItemDecoration(
          new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
    }
    mLayoutManager = new LinearLayoutManager(getActivity());
    mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);
    mRecyclerView.setHasFixedSize(false);

    if (mAdapter != null) {
      mRecyclerView.setAdapter(mAdapter);
      mErrorLayout.setErrorType(EmptyLayout.HIDE_LAYOUT);
    } else {
      mAdapter = getListAdapter();
      mAdapter.setOnItemClickListener(this);
      mAdapter.setOnItemLongClickListener(this);
      mRecyclerView.setAdapter(mAdapter);
      if (requestDataIfViewCreated()) {
        mCurrentPage = 0;
        mState = STATE_REFRESH;
        mErrorLayout.setErrorType(EmptyLayout.NETWORK_LOADING);
        new ReadCacheTask(this).execute();
      } else {
        mErrorLayout.setErrorType(EmptyLayout.HIDE_LAYOUT);
      }
    }
    if (mStoreEmptyState != -1) {
      mErrorLayout.setErrorType(mStoreEmptyState);
    }
    if (!TextUtils.isEmpty(mStoreEmptyMessage)) {
      mErrorLayout.setErrorMessage(mStoreEmptyMessage);
    }
  }