项目需要动态更新listview里的item,但是insertXXXXitem(index,item),不论index的值如何变化,始终显示在列表的最后。
看了下listview
void ListView::refreshView()
{
ssize_t length = _items.size();
for (int i=0; i<length; i++)
{
Widget* item = _items.at(i);
item->setLocalZOrder(i);
remedyLayoutParameter(item);
}
updateInnerContainerSize();
}
在这里对_children按照_items里的顺序进行了排序,
但为什么在doLayout里getLayoutElements()
函数返回的是_children,但这里的顺序是加入item的顺序,而不是_items里的顺序,所以插入item的任何位置都无效,请问是怎么回事?
void LinearVerticalLayoutManager::doLayout(LayoutProtocol* layout)
{
Size layoutSize = layout->getLayoutContentSize();
Vector<Node*> container = layout->getLayoutElements();
float topBoundary = layoutSize.height;
for (auto& subWidget : container)
{
LayoutParameterProtocol* child = dynamic_cast<LayoutParameterProtocol*>(subWidget);
if (child)
{