package com.ericliudeveloper.sharedbillhelper.ui.fragment; import android.app.Fragment; import android.database.Cursor; import android.os.Bundle; 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 android.widget.FrameLayout; import com.ericliudeveloper.sharedbillhelper.R; import com.ericliudeveloper.sharedbillhelper.adapter.CursorRecyclerAdapter; import com.ericliudeveloper.sharedbillhelper.ui.presenter.ListPresenter; /** * Created by liu on 8/06/15. */ public abstract class RecyclerViewFragment extends Fragment { protected RecyclerView mRecyclerView; protected CursorRecyclerAdapter mAdapter; protected ListPresenter mPresenter; protected FrameLayout mEmptyView; protected abstract ListPresenter getPresenter(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setRetainInstance(true); // causes crashes, wati for google to fix it mPresenter = getPresenter(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View root = inflater.inflate(R.layout.list_layout, container, false); setupViews(root); return root; } protected void setupViews(View root) { mEmptyView = (FrameLayout) root.findViewById(R.id.emptyViewContainer); mRecyclerView = (RecyclerView) root.findViewById(R.id.list); LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(layoutManager); mAdapter = new CursorRecyclerAdapter(null) { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView; RecyclerView.ViewHolder holder; holder = mPresenter.getCustomViewHolder(parent, viewType); return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, Cursor cursor) { mPresenter.setViewHolderData(holder, cursor); } }; mRecyclerView.setAdapter(mAdapter); } public RecyclerView getRecyclerView() { return mRecyclerView; } }