FMX的ListView,可以呈现各种类型的Item,经测试,其用户体验程度,已经达到原生ios应用的水平。下图,是ListView呈现的各种样式,当把TListView放到Form上,设置ItemAppearance属性,就能得到这样的效果了。a4c26d1e5885305701be709a3d33442f.png

ItemAppearance的值不同,Item的属性值会随之变化,主要是以下几项:

Item.Text:Item左侧显示的标题

Item.Bitmap:左侧显示的图标

Item.ButtonText:右测按钮显示的标题

Item.Detail:右侧显示的详细内容

有两种方式给ListView传递数据,一种是代码方式填加,下面用代码演示:

var

LItem:

TListViewItem;

I:

Integer;

begin

ListView1.BeginUpdate;//提高效率

try

for I := 1

to 10 do

begin

LItem :=

ListView1.Items.Add;

LItem.Text :=

IntToStr(I);

end;

finally

ListView1.EndUpdate;

end;

end;

另一种是利用binding,完全可视化的方式。放置一个TProtoTypeBindSource,为其增加几个Field,然后利用右键bind

Visually,即binding可视设计器,将Field联接到item的Text等属性。如图:

a4c26d1e5885305701be709a3d33442f.png

ProtoTypeBindSource,为我们准备好了测试数据,这样即时得到了运行期才能看到的结果,EMB现在真是太贴心了。你不觉得?反正我是有些微微的感动,几颗清泪差动没下来,现在的好人不多啊。

删除一条项目

用过iphone都知道,提供的通话记录,横向划动一条内容,就会在右侧出现一个红色的删除按钮,用这个按钮就可以把当前这条内容删除掉。想当初被这个功能惊叹过,Apple真有创意,万万没想到啊,今天咱也可以轻松实现了。

ListView提供了一个属性:CanSwipeDelete,默认为True,即ListView默认就支持划动删除了!还有对应一个事件,OnDeleteItem,有个参数AIndex:

procedure TForm1.ListView1DeleteItem(Sender: TObject;

AIndex: Integer);

begin

listview1.Items.Delete(AIndex);//不要在这里再删除了

end;

在这里,我犯了个错误,就是在事件中执行了:

ListView1.Items.Delete(AIndex),结果,一删除就删除二条内容。原来,ListView已经做了删除,不用咱再费心了!

好了,先写到这,想起一休:休息、休息...

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐