Can't get hook_field_attach_view_alter to set the value of the field
Ok, I found the answer: the key "#items" in the output array needs to have an array with an array as the value - not just the array:

$output[$field_name] = array(
    '#theme' =&gt; 'field',
    '#title' =&gt; $instance['label'],
    '#label_display' =&gt; 'above',
    '#field_type' =&gt; $field['type'],
    '#field_name' =&gt; $field_name,
    '#bundle' =&gt; $node-&gt;type,
    '#object' =&gt; $node,
    '#items' =&gt; array(),
    '#entity_type' =&gt; 'node',
    '#weight' =&gt; $display['weight'],
    0 =&gt; array('#markup' =&gt; '&amp;nbsp;'),
  );


becomes

$output[$field_name] = array(
    '#theme' =&gt; 'field',
    '#title' =&gt; $instance['label'],
    '#label_display' =&gt; 'above',
    '#field_type' =&gt; $field['type'],
    '#field_name' =&gt; $field_name,
    '#bundle' =&gt; $node-&gt;type,
    '#object' =&gt; $node,
    '#items' =&gt; array(array()),
    '#entity_type' =&gt; 'node',
    '#weight' =&gt; $display['weight'],
    0 =&gt; array('#markup' =&gt; '&amp;nbsp;'),
  );