0
RadListView.scrollToIndex()는 항목이 이미 표시되어 있는지 여부에 관계없이 항상 현재 창 아래쪽에 선택된 항목을 표시하는 것처럼 보입니다.RadListView 더 나은 scrollToIndex() 동작
RadListView.isVisible()과 같은 기능이 있습니까?
RadListView.scrollToIndex()는 항목이 이미 표시되어 있는지 여부에 관계없이 항상 현재 창 아래쪽에 선택된 항목을 표시하는 것처럼 보입니다.RadListView 더 나은 scrollToIndex() 동작
RadListView.isVisible()과 같은 기능이 있습니까?
주어진 시나리오를 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 속성을 사용할 수 있습니다.
더 많은 항목이 필요하며 목록의 중간 또는 끝에있는 어딘가로 스크롤해야합니다. "for"를 200으로 변경 한 다음 scrollToIndex를 180으로 변경하면 해당 항목이보기의 맨 아래에 표시됩니다. 그건 문제가 아니야. 문제는 해당 항목이 이미보기에있는 경우입니다. 스크롤하여보기의 맨 아래로 이동합니다. 두 번째 부분은 목록 항목이 표시 될 때와 관련이 있습니다. 목록보기 자체는 아닙니다. 나는 "item.isVisible()이 아니라면 item.scrollToIndex()"를 수행 할 것입니다. " – dashman