У меня очень распространенный сценарий, когда пользователь может переключать макет списка между линейным / сетчатым / шахматным представлением, нажав значок. Раньше у меня было 2 списка - ListView для стандартного макета списка и RadListView для просмотра сетки. Я их скрывал и показывал в зависимости от требуемого «режима». Но поскольку в 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()
}
Это правильный способ или я делаю не так?