2017-08-23 5 views
0

アイコンをタップすることでリストとグリッドの間でリストレイアウトを切り替えることができる非常に一般的なシナリオがあります。 2つのリストがある前は - 標準リストレイアウトのListViewとグリッドビューのRadListView。私は必要な "モード"に応じて隠れて見せた。しかし、RadListViewはすべての必要なレイアウトを持っているので、理論的には1つのリストしか持たず、レイアウトを切り替えて再利用することができます。私はそれをXMLで直接行う方法は見つけられていないので、コード内でこれをプログラム的に行うことを考えています。ここでNativescript:RadListView、プログラムでlistViewLayoutを切り替える方法

は私の試みです:

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() 
    } 

は、これは正しい方法ですか私はそれが間違ってやっていますか?

+0

私は単純なNativeScript-Angularの例を持っていますが、あなたはそれを使用していないと思いますよね? –

+0

listViewLayoutを切り替えると、バニラのNativescriptの角の例をいつでも調整できます。共有してください。 – terreb

答えて

1

はいこれは、RadListViewコンポーネントのlistViewLayoutを変更する方法です。 .refresh()メソッドへの呼び出しがあることがわかります。これは必須ではありません。新しい値をlistViewLayoutプロパティに設定するだけです。

RadListView hereの公式の例を変更することができます。

+0

パーフェクト、ありがとう!あなたもXMLでそれらを切り替える実装を計画していますか? templateSelectorと同様に、layoutSelectorかもしれません。本当にいいですか? – terreb

+0

このようなセレクタ機能をRadListViewに追加する直ちの計画はありません。コンポーネントに恩恵を受ける可能性があると感じる場合は、フィードバックポータル(https://github.com/telerik/nativescript-ui-feedback/issues)を使用して「機能要求」として追加してください。 –

関連する問題