package dsq.thedroid.ui;
import android.app.ListActivity;
import android.database.Cursor;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import dsq.thedroid.db.DbAdapter;
public class DefaultLists implements Lists {
public void refresh(final ListActivity activity, final Cursor cursor, final ListView view, final ComponentIndex rowUi, final ListMapping mapping, final SimpleCursorAdapter.ViewBinder binder) {
activity.startManagingCursor(cursor);
final int[] dest = ids(mapping, mapping.dest());
SimpleCursorAdapter c = new SimpleCursorAdapter(activity, rowUi.value, cursor, mapping.source(), dest);
c.setViewBinder(binder);
view.setAdapter(c);
view.setOnItemClickListener(new ListView.OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
adapterView.showContextMenuForChild(view);
}
});
}
private int[] ids(final ListMapping mapping, final ComponentIndex[] destUis) {
final int[] destUiIds = new int [mapping.dest().length];
for (int i = 0; i < destUis.length; i++) {
ComponentIndex destUi = destUis[i];
destUiIds[i] = destUi.value;
}
return destUiIds;
}
public void refreshById(final ListActivity activity, final DbAdapter adapter, final int id, final ListView view, final ComponentIndex rowUi, final ListMapping mapping, final SimpleCursorAdapter.ViewBinder binder) {
Cursor cursor = adapter.fetchById(id);
refresh(activity, cursor, view, rowUi, mapping, binder);
}
public void refreshAll(final ListActivity activity, final DbAdapter adapter, final ListView view, final ComponentIndex rowUi, final ListMapping mapping, final SimpleCursorAdapter.ViewBinder binder) {
final Cursor cursor = adapter.fetchAll();
refresh(activity, cursor, view, rowUi, mapping, binder);
}
}