Ага, не обратил внимания. Тогда только ваш способ.
Получается косяк в справке, т.к. там написано
procedure TForm1.ListView1ButtonClick(const Sender: TObject;
const AItem: TListViewItem; const AObject: TListItemSimpleControl);
begin
ShowMessage(AItem.Text + ' ' +AItem.ButtonText + ' is clicked.');
end;
т.е. мой способ был бы рабочим если бы в событии приходил TListViewItem, а не TListItem.
p.s. Пруф на справку: http://docwiki.embarcadero.com/RADStudio/Seattle/en/Mobile_Tutorial:_Using_LiveBindings_to_Populate_a_ListView_%28iOS_and_Android%29#Step_5:_Adding_the_onButtonClick_Event_Handler