Basic setup classes
September 18, 2014 ยท View on GitHub
enum RowTypes {
ROW_1
}
class ViewHolder1 {
// To hold views present in Row1.
}
Linking your Cursor to ViewHolder in a RowViewSetter class.
class RowViewSetter1 implements CursorRowViewSetter<ViewHolder1> {
@Override
public int getRowType() {
// return unique row type identifier (0-based)
return RowTypes.ROW_1.ordinal();
}
@Override
public Row<ViewHolder1> getNewRow(ViewGroup parent) {
// 1.Create Row programmatically (can be created by XML as well.)
// 2.Setting up row view holder.
return new Row<ViewHolder1>(view, viewHolder);
}
@Override
public void setRowView(Cursor data, ViewHolder1 rowViewHolder, int position) {
// Update view values using your data & viewHolder.
}
@Override
public void registerChildrenViewClickEvents(ViewHolder1 rowViewHolder,
ChildViewsClickHandler childViewsClickHandler) {
// Register for child-view clicks if required.
}
@Override
public void onChildViewClicked(View clickedChildView, Cursor rowData,
int eventId) {
// Click events for registerd chilren will be posted here
}
}
Telling adapter about your row.
class MyEasyCursorAdapter extends EasyCursorAdapter {
public MyEasyAdapter(Context context,Cursor c) {
super(context,Cursor c);
}
@Override
public int getRowViewType(Cursor rowData) {
// Return correct row type for given data object.
}
@Override
protected CursorRowViewSetter<?, ?>[] getCursorRowViewSetters() {
// Return all types of rows you want to support.
CursorRowViewSetter<?, ?>[] rows = { new RowViewSetter1() };
return rows;
}
}
Adding new row becomes simple as shown below
//Update RowTypes Enum
enum RowTypes {
ROW_1,ROW_2
}
class ViewHolder2 {
// To hold views present in Row2.
}
// Link POJO to ViewHolder
class RowViewSetter2 implements CursorRowViewSetter<ViewHolder2> {
// Implement methods for this Row2 as shown in RowViewSetter1
}
// Last step is to tell your adapter about your new RowViewSetter class by updating
CursorRowViewSetter<?, ?>[] rows = { new RowViewSetter1() };
to
CursorRowViewSetter<?, ?>[] rows = { new RowViewSetter1(), new RowViewSetter2() };