# aardio 范例: listview 简单加载动画

```aardio
import win.ui;
/*DSG{{*/
var winform = win.form(text="listview 简单加载动画";right=688;bottom=303;max=false)
winform.add(
button={cls="button";text="停止动画";left=343;top=244;right=531;bottom=282;z=2};
listview={cls="listview";left=18;top=20;right=664;bottom=232;bgcolor=0xFFFFFF;edge=1;z=1}
)
/*}}*/

winform.listview.columns = [ 
	["标题",150],
	["状态",-1/*自适应宽度*/]
]

winform.listview.items = [["测试项目",""],["测试项目2",""]] //二维数组

//在 listview 里用纯文本模仿进度条效果
function textProgressBar(current, total, length = 20){
	var percent = current / total;
	var filled = math.floor(length * percent);
	var bar = string.repeat(filled,"▓") + string.repeat(length - filled,"░");

	return string.format(percent<10?'%s %.1f%%':'%s %.0f%%', bar, percent * 100);
}

winform.listview.reduce(
	["✶";"✸";"✹";"✺";"✹";"✷"],
	function(value,index,length,currentTime){
		if(value){
			winform.listview.setItemText(value + " 正在处理当前项",1,2);
		}
		
		return 150;
	} 
)

winform.button.oncommand = function(id,event){
	winform.listview.reduce(false);
	winform.listview.setItemText("✓ 已完成",1,2);
}

//避免 listview 控件频繁刷新时闪烁
winform.listview.enableDoubleBuffering();
	
winform.show() 
win.loopMessage();
```