 <p>Just override the newView Method: </p> <pre><code>public class MyCursorAdapter extends CursorAdapter { private final LayoutInflater inflater; private ContentType type; public MyCursorAdapter (Context context, Cursor c) { super(context, c); inflater = LayoutInflater.from(context); } @Override public void bindView(View view, Context context, Cursor cursor) { if( cursor.getString(cursor.getColumnIndex("type")).equals("type1") ) { // get elements for type1 } else { // get elements for type1 } } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { if( cursor.getString(cursor.getColumnIndex("type")).equals("type1") ) { final View view = inflater.inflate(R.layout.item_type1, parent, false); } else { final View view = inflater.inflate(R.layout.item_type2, parent, false); } return view; } </code></pre>