#include <GUIConstantsEx.au3>
#include <GuiListView.au3>

$Debug_LV = False ; Проверяет ClassName передаваемый в ListView функции. Установите True и используйте дескриптор от другого элемента, чтобы увидеть как это работает

_Main()

Func _Main()
	Local $iI, $iTimer, $hListView

	; Создаёт GUI
	GUICreate("ListView - Добавить массив пунктов", 400, 300)
	$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
	GUISetState()

	; Добавляет колонки
	_GUICtrlListView_AddColumn($hListView, "Пункты", 90)
	_GUICtrlListView_AddColumn($hListView, "Подпункт 1", 100)
	_GUICtrlListView_AddColumn($hListView, "Подпункт 2", 100)
	_GUICtrlListView_AddColumn($hListView, "Подпункт 3", 100)

	_GUICtrlListView_SetItemCount($hListView, 5000)

	; Загрузка одной колонки
	Local $aItems[5000][1]
	For $iI = 0 To UBound($aItems) - 1
		$aItems[$iI][0] = "Пункт " & $iI
	Next
	$iTimer = TimerInit()
	_GUICtrlListView_AddArray($hListView, $aItems)
	MsgBox(4160, "Информация", "Время загрузки пунктов: " & Round(TimerDiff($iTimer) / 1000, 3) & " секунд")

	_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hListView)) ; пункты добавленные с помощью функций UDF могут быть удалены используя функции UDF

	; Загрузка четырёх колонок
	Dim $aItems[5000][4]
	For $iI = 0 To UBound($aItems) - 1
		$aItems[$iI][0] = "Пункт " & $iI
		$aItems[$iI][1] = "Пункт " & $iI & "-1"
		$aItems[$iI][2] = "Пункт " & $iI & "-2"
		$aItems[$iI][3] = "Пункт " & $iI & "-3"
	Next
	$iTimer = TimerInit()
	_GUICtrlListView_AddArray($hListView, $aItems)
	MsgBox(4160, "Информация", "Время загрузки пунктов: " & Round(TimerDiff($iTimer) / 1000, 3) & " секунд")

	; Цикл выполняется, пока окно не будет закрыто
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>_Main