如何确定当前项目是否是 ListView 部分中的最后一项
How can I figure out if the current item is the last item in a section of a ListView
因此,当我绘制 ListView
项目时,我会将它们分类。一个部分中的每个项目都有一行作为与下一个项目的分隔符。对于最后一项,我不想绘制此分隔符。我如何确定正在绘制的当前项目是否是该部分中的最后一项(不在 ListView
中!)?
看起来不可能弄清楚。但是,可能以不同的方式实现相同的结果。不是每个项目都有一条线将它与下一个项目分开,而是用一条线将它与前一个项目分开,在委托部分中也有它,只是不要为 index === 0
[=11 的项目绘制它=]
显然 ListView
具有名为 section
、previousSection
、nextSection
的附加属性。有了这些,就很容易找出下一个或上一个部分是否与当前部分相同。如果不相同,则表示它是该部分的最后一项。
每个委托项都知道自己的索引,因此可以将其与 ListView
项计数进行比较:
ListView {
id: theListView
model: ...
delegate: Item {
property bool isLast: index+1 < theListView.count ? false : true
...
}
}
index == 0 如果模型是静态的而不是动态的,则显示模型的第一个(实际上是最新的)项目。这意味着,如果您的 listView 不时使用新项目进行更新,那么当新列表项目到达时,index == 0 会绑定到不同的元素。
因此,当我绘制 ListView
项目时,我会将它们分类。一个部分中的每个项目都有一行作为与下一个项目的分隔符。对于最后一项,我不想绘制此分隔符。我如何确定正在绘制的当前项目是否是该部分中的最后一项(不在 ListView
中!)?
看起来不可能弄清楚。但是,可能以不同的方式实现相同的结果。不是每个项目都有一条线将它与下一个项目分开,而是用一条线将它与前一个项目分开,在委托部分中也有它,只是不要为 index === 0
[=11 的项目绘制它=]
显然 ListView
具有名为 section
、previousSection
、nextSection
的附加属性。有了这些,就很容易找出下一个或上一个部分是否与当前部分相同。如果不相同,则表示它是该部分的最后一项。
每个委托项都知道自己的索引,因此可以将其与 ListView
项计数进行比较:
ListView {
id: theListView
model: ...
delegate: Item {
property bool isLast: index+1 < theListView.count ? false : true
...
}
}
index == 0 如果模型是静态的而不是动态的,则显示模型的第一个(实际上是最新的)项目。这意味着,如果您的 listView 不时使用新项目进行更新,那么当新列表项目到达时,index == 0 会绑定到不同的元素。