package io.pivotal.arca.fragments;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import io.pivotal.arca.adapters.RecyclerViewCursorAdapter;
import io.pivotal.arca.dispatcher.QueryResult;
import io.pivotal.arca.dispatcher.Error;
public abstract class ArcaRecyclerViewFragment extends ArcaQueryFragment {
public abstract RecyclerViewCursorAdapter onCreateAdapter(final RecyclerView recyclerView, final Bundle savedInstanceState);
private RecyclerView mRecyclerView;
private RecyclerViewCursorAdapter mAdapter;
private RecyclerView.LayoutManager mManager;
@Override
public void onViewCreated(final View view, final Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setupRecyclerView(view, savedInstanceState);
}
public RecyclerView.LayoutManager onCreateLayoutManager(final RecyclerView recyclerView, final Bundle savedInstanceState) {
return new LinearLayoutManager(getActivity());
}
private void setupRecyclerView(final View view, final Bundle savedInstanceState) {
mRecyclerView = (RecyclerView) view.findViewById(getRecyclerViewId());
mManager = onCreateLayoutManager(mRecyclerView, savedInstanceState);
mAdapter = onCreateAdapter(mRecyclerView, savedInstanceState);
mRecyclerView.setLayoutManager(mManager);
mRecyclerView.setAdapter(mAdapter);
}
public int getRecyclerViewId() {
return android.R.id.list;
}
public RecyclerView getRecyclerView() {
return mRecyclerView;
}
public RecyclerViewCursorAdapter getRecyclerViewAdapter() {
return mAdapter;
}
@Override
public final void onRequestComplete(final QueryResult result) {
if (result.hasError()) {
onContentError(result.getError());
} else {
getRecyclerViewAdapter().swapCursor(result.getData());
onContentChanged(result);
}
}
protected void onContentChanged(final QueryResult result) {
}
protected void onContentError(final Error error) {
}
}