Nativescript:RadListView,如何以编程方式切换布局(listViewLayout)
Nativescript: RadListView, how to switch layout (listViewLayout) programatically
我有一个非常常见的场景,用户可以通过点击图标在 linear/grid/staggered 视图之间切换列表布局。在我有 2 个列表之前-用于标准列表布局的 ListView 和用于网格视图的 RadListView。我根据需要隐藏和显示它们 "mode"。但由于 RadListView 理论上具有所有必需的布局,因此我只能拥有一个列表并通过切换布局来重用它。我还没有在 XML 中找到直接执行此操作的方法(如果有的话,那将是最好的方法),所以我正在考虑在后面的代码中以编程方式执行此操作。
这是我的尝试:
function _switchListViewLayout() {
const list = modal.getViewById( 'list' )
let layout
if ( list.listViewLayout instanceof ListViewLinearLayout ) {
// switch to grid
layout = new ListViewGridLayout()
layout.scrollDirection = 'vertical'
layout.itemHeight = 150
layout.spanCount = 2
}
else if ( list.listViewLayout instanceof ListViewGridLayout ) {
// switch to list
layout = new ListViewLinearLayout()
layout.scrollDirection = 'vertical'
layout.itemHeight = 66
}
list.listViewLayout = layout
list.refresh()
}
这是正确的方法还是我做错了?
是的,您可以通过这种方式更改 RadListView 组件的 listViewLayout。我确实看到您调用了 .refresh()
方法,这不是必需的,您只需将新值设置为 listViewLayout
属性.
您可以在 RadListView 的官方示例中更改 here。
我有一个非常常见的场景,用户可以通过点击图标在 linear/grid/staggered 视图之间切换列表布局。在我有 2 个列表之前-用于标准列表布局的 ListView 和用于网格视图的 RadListView。我根据需要隐藏和显示它们 "mode"。但由于 RadListView 理论上具有所有必需的布局,因此我只能拥有一个列表并通过切换布局来重用它。我还没有在 XML 中找到直接执行此操作的方法(如果有的话,那将是最好的方法),所以我正在考虑在后面的代码中以编程方式执行此操作。
这是我的尝试:
function _switchListViewLayout() {
const list = modal.getViewById( 'list' )
let layout
if ( list.listViewLayout instanceof ListViewLinearLayout ) {
// switch to grid
layout = new ListViewGridLayout()
layout.scrollDirection = 'vertical'
layout.itemHeight = 150
layout.spanCount = 2
}
else if ( list.listViewLayout instanceof ListViewGridLayout ) {
// switch to list
layout = new ListViewLinearLayout()
layout.scrollDirection = 'vertical'
layout.itemHeight = 66
}
list.listViewLayout = layout
list.refresh()
}
这是正确的方法还是我做错了?
是的,您可以通过这种方式更改 RadListView 组件的 listViewLayout。我确实看到您调用了 .refresh()
方法,这不是必需的,您只需将新值设置为 listViewLayout
属性.
您可以在 RadListView 的官方示例中更改 here。