2016-09-01 8 views
0

RadListView.scrollToIndex()는 항목이 이미 표시되어 있는지 여부에 관계없이 항상 현재 창 아래쪽에 선택된 항목을 표시하는 것처럼 보입니다.RadListView 더 나은 scrollToIndex() 동작

RadListView.isVisible()과 같은 기능이 있습니까?

답변

0

주어진 시나리오를 scrollToIndex()으로 테스트 한 결과 이러한 동작을 재연하지 못했습니다. 선택한 행은 항상 화면 상단에 표시됩니다. 샘플 코드를 검토 할 수 있습니다.

메인에서 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

당신이 뷰에로드되었을 때 알고 싶은 경우에 loaded 이벤트를 사용할 수있는 두 번째 질문에 대해
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으로 변경하면 해당 항목이보기의 맨 아래에 표시됩니다. 그건 문제가 아니야. 문제는 해당 항목이 이미보기에있는 경우입니다. 스크롤하여보기의 맨 아래로 이동합니다. 두 번째 부분은 목록 항목이 표시 될 때와 관련이 있습니다. 목록보기 자체는 아닙니다. 나는 "item.isVisible()이 아니라면 item.scrollToIndex()"를 수행 할 것입니다. " – dashman