C'mon, the help file content regarding _GUICtrlListView_AddArray is very easy to understand and the example there have everything you need.
All I did is: I stripped all useless code and here is a working result - it shows that an array will be correctly added to the List View control:
#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
Opt('MustDeclareVars', 1)
$Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work
_Main()
Func _Main()
Local $iI, $iTimer, $hListView
; Create GUI
GUICreate("ListView Add Array", 400, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
GUISetState()
; Add columns
_GUICtrlListView_AddColumn($hListView, "Program", 100)
; this block of code only generates the array
Local $aItems[200][1]
For $iI = 0 To UBound($aItems) - 1
$aItems[$iI][0] = "Item " & $iI
Next
_GUICtrlListView_AddArray($hListView, $aItems)
; Loop until user exits
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
Your $ProgramArray is uni-dimensional so the example is exactly as you need.
It works IF $ProgramArray is an array - if it is not, it won't work.
Did you think to check the content of $ProgramArray before attempting to put it in the ListView? A simple _ArrayDisplay can save you alot of headaches.