package io.pivotal.arca.fragments; import android.annotation.TargetApi; import android.os.Build; import android.os.Bundle; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import java.util.Collection; import io.pivotal.arca.adapters.Binding; import io.pivotal.arca.adapters.RecyclerItemClick; import io.pivotal.arca.adapters.RecyclerViewCursorAdapter; import io.pivotal.arca.dispatcher.Error; import io.pivotal.arca.dispatcher.QueryResult; import io.pivotal.arca.monitor.ArcaDispatcher; public class ArcaSimpleRecyclerViewFragment extends ArcaRecyclerViewFragment implements RecyclerItemClick.Listener { private ArcaViewManager mManager; @Override public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) { final View view = inflater.inflate(FragmentUtils.getFragmentLayout(this.getClass()), container, false); final RecyclerView recyclerView = (RecyclerView) view.findViewById(getRecyclerViewId()); recyclerView.addOnItemTouchListener(new RecyclerItemClick(getActivity(), recyclerView, this)); return view; } @Override public void onItemClick(final RecyclerView recyclerView, final View view, final int position, final long id) { } @Override public void onItemLongClick(final RecyclerView recyclerView, final View view, final int position, final long id) { } public RecyclerViewCursorAdapter onCreateAdapter(final RecyclerView recyclerView, final Bundle savedInstanceState) { final int layout = FragmentUtils.getAdapterItemLayout(this.getClass()); final Collection<Binding> bindings = FragmentUtils.getBindings(this.getClass()); final RecyclerViewCursorAdapter adapter = new RecyclerViewCursorAdapter(getActivity(), layout, bindings); adapter.setViewBinder(FragmentUtils.createViewBinder(this.getClass())); return adapter; } @Override public ArcaDispatcher onCreateDispatcher(final Bundle savedInstanceState) { final ArcaDispatcher dispatcher = super.onCreateDispatcher(savedInstanceState); dispatcher.setRequestMonitor(FragmentUtils.createRequestMonitor(this.getClass())); return dispatcher; } public ArcaViewManager onCreateViewManager(final View view, final Bundle savedInstanceState) { return new ArcaViewManager(view); } @Override @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) public void onViewCreated(final View view, final Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setupViewManager(view, savedInstanceState); } @Override public void onStart() { super.onStart(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) { setupViewManager(getView(), null); } } protected ArcaViewManager getViewManager() { return mManager; } private void setupViewManager(final View view, final Bundle savedInstanceState) { mManager = onCreateViewManager(view, savedInstanceState); mManager.showProgressView(); } @Override public void onContentChanged(final QueryResult result) { mManager.checkResult(result); } @Override public void onContentError(final Error error) { mManager.checkError(error); } }