package io.pivotal.arca.adapters;
import android.content.Context;
import android.database.Cursor;
import android.view.View;
import java.util.Collection;
import java.util.List;
import io.pivotal.arca.adapters.ViewBinder.DefaultViewBinder;
public class CursorAdapterHelper {
private final BindingHelper mBindingHelper;
private final DefaultViewBinder mDefaultBinder;
private ViewBinder mViewBinder;
public CursorAdapterHelper(final Collection<Binding> bindings) {
mBindingHelper = new BindingHelper(bindings);
mDefaultBinder = new DefaultViewBinder();
}
public void setViewBinder(final ViewBinder binder) {
mViewBinder = binder;
}
public void bindView(final View container, final Context context, final Cursor cursor, final int type) {
final List<Binding> bindings = mBindingHelper.getBindings(type, cursor);
for (final Binding binding : bindings) {
bindView(container, cursor, binding);
}
}
private void bindView(final View container, final Cursor cursor, final Binding binding) {
final View view = ViewHelper.getView(container, binding.getViewId());
boolean bound = false;
if (mViewBinder != null) {
bound = mViewBinder.setViewValue(view, cursor, binding);
}
if (!bound) {
bound = mDefaultBinder.setViewValue(view, cursor, binding);
}
if (!bound) {
throw new IllegalStateException("Cannot bind to view: " + view);
}
}
}