2016-09-01 12 views
0

RadListView.scrollToIndex()は、アイテムが既に表示されているかどうかにかかわらず、常に現在のウィンドウの下部に選択されたアイテムを表示しているようです。RadListViewのscrollToIndex()の動作が良好

RadListView.isVisible()のような機能はありますか?

答えて

0

私はちょうどscrollToIndex()と与えられたシナリオをテストし、そのような振る舞いを再現することができませんでした。選択した行は常に画面の上部に表示されています。私のサンプルコードを見直すことができます。あなたはビューの上にロードされたときを知りたい場合にはloadedイベントを使用することができます2番目の質問について

メインpage.xml

<Page loaded="onPageLoaded" xmlns:lv="nativescript-telerik-ui-pro/listview" xmlns="http://www.nativescript.org/tns.xsd"> 
    <lv:RadListView id="rdid" loaded="radlistviewlaoded" items="{{ dataItems }}" > 
     <lv:RadListView.listViewLayout> 
      <lv:ListViewLinearLayout scrollDirection="Vertical"/> 
     </lv:RadListView.listViewLayout> 
     <lv:RadListView.itemTemplate> 
      <StackLayout orientation="vertical"> 
       <Label fontSize="20" text="{{ itemName }}"/> 
       <Label fontSize="14" text="{{ itemDescription }}"/> 
      </StackLayout> 
     </lv:RadListView.itemTemplate> 
    </lv:RadListView> 
</Page> 

メインpage.ts

import { EventData } from "data/observable"; 
import { Page } from "ui/page"; 
import { HelloWorldModel } from "./main-view-model"; 
import { ObservableArray } from "data/observable-array"; 
import { RadListView } from "nativescript-telerik-ui-pro/listview"; 
import {setTimeout} from "timer" 

// Event handler for Page "navigatingTo" event attached in main-page.xml 
export function onPageLoaded(args: EventData) { 
    // Get the event sender 
    var page = <Page>args.object; 
    var listview:RadListView = <RadListView> page.getViewById("rdid"); 
    console.log("listview visibility "+listview.visibility); 
    //listview.scrollToIndex(3); 
    var array = new ObservableArray(); 
    for(var i=0;i<20;i++){ 
     array.push({itemName:"Name "+i, itemDescription:"desc "+i}); 
    } 
    setTimeout(function(){ 
     listview.scrollToIndex(3) 
    }, 2000) 

    page.bindingContext = {dataItems:array}; 
} 

export function radlistviewlaoded(args:EventData){ 
    console.log("RadListView loaded"); 
} 

スクリーン。 RadListviewが表示されているかどうかを知りたい場合はvisibilityプロパティを使用できます。

+0

あなたはもっと多くのエントリーでそれをしなければならず、リストの真ん中または最後のどこかにスクロールしなければなりません。 "for"を200に変更してからscrollToIndexを180に変更すると、そのエントリがビューの下部に表示されます。それは問題ではありません。問題は、そのアイテムがすでにビューに入っている場合です。スクロールしてビューの下部に移動します。リスト項目が表示されている場合、質問の第2の部分は関係しています。リストビュー自体ではありません。私は "item.isVisible()ではない場合は次にitem.scrollToIndex()" – dashman

関連する問題