package io.pivotal.arca.adapters;
import android.annotation.TargetApi;
import android.content.Context;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.os.Build;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import java.util.Collection;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class RecyclerViewCursorAdapter extends RecyclerView.Adapter<RecyclerViewCursorAdapter.ViewHolder> {
private final ModernCursorAdapter mCursorAdapter;
public RecyclerViewCursorAdapter(final ModernCursorAdapter cursorAdapter) {
cursorAdapter.registerDataSetObserver(new RecyclerViewDataSetObserver());
mCursorAdapter = cursorAdapter;
setHasStableIds(true);
}
public RecyclerViewCursorAdapter(final Context context, final int layout, final Collection<Binding> bindings) {
this(new ModernCursorAdapter(context, layout, bindings));
}
@Override
public RecyclerViewCursorAdapter.ViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
final View view = mCursorAdapter.newView(parent.getContext(), mCursorAdapter.getCursor(), parent);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final RecyclerViewCursorAdapter.ViewHolder holder, final int position) {
final Cursor cursor = (Cursor) mCursorAdapter.getItem(position);
mCursorAdapter.bindView(holder.getView(), holder.getView().getContext(), cursor);
}
@Override
public int getItemViewType(final int position) {
return mCursorAdapter.getItemViewType(position);
}
@Override
public int getItemCount() {
return mCursorAdapter.getCount();
}
@Override
public long getItemId(final int position) {
return mCursorAdapter.getItemId(position);
}
public Object getItem(final int position) {
return mCursorAdapter.getItem(position);
}
public void setViewBinder(final ViewBinder viewBinder) {
mCursorAdapter.setViewBinder(viewBinder);
}
public Cursor swapCursor(final Cursor newCursor) {
return mCursorAdapter.swapCursor(newCursor);
}
public Cursor getCursor() {
return mCursorAdapter.getCursor();
}
public boolean hasResults() {
final Cursor cursor = getCursor();
return cursor != null && cursor.getCount() > 0;
}
private class RecyclerViewDataSetObserver extends DataSetObserver {
@Override
public void onChanged() {
notifyDataSetChanged();
}
}
public static class ViewHolder extends RecyclerView.ViewHolder {
private final View mView;
public ViewHolder(final View itemView) {
super(itemView);
mView = itemView;
mView.setClickable(true);
}
public View getView() {
return mView;
}
}
}