가장 간단한 방법은 정적 목록 만 사용하려는 경우 (런타임에 변경하지 않으려는 경우) XML 파일 (예 : assets
의 model.xml
)에서로드하는 것입니다. 이 같은 폴더) :
는
<model>
<header title="Green"/>
<item title="Cucumber"/>
<item title="Peas"/>
<item title="Salad"/>
<header title="Red"/>
<item title="Tomato"/>
<item title="Red Radish"/>
<item title="Carrot"/>
</model>
귀하의 ListView 그냥 필요
그것을로드 :
ListView {
dataModel: XmlDataModel {
source: "model.xml"
}
}
를 이제, 당신은 성상을 사용자 정의하려는 경우, 당신은 단지 당신이 그들을 원하는 방법 listItemComponents에 넣어해야 표시 될 내용 :
ListView {
dataModel: XmlDataModel {
source: "model.xml"
}
listItemComponents: [
ListItemComponent {
type: "header"
Container {
// your personal code
}
},
ListItemComponent {
type: "item"
Container {
// your personal code
}
}
]
}
이 컨테이너를 사용하면 자신 만의 레이아웃을 정의 할 수 있습니다. 예를 들어, 가정하여 방금 일치하는 배경 색상 헤더를 표시하려면, 당신은 다만 수 :
ListView {
dataModel: XmlDataModel {
source: "model.xml"
}
listItemComponents: [
ListItemComponent {
type: "header"
Container {
background: {
if (ListItemData.title == "Green") {
return Color.Green
} else {
return Color.Red
}
}
Header {
title: ListItemData.title
}
}
},
ListItemComponent {
type: "item"
Container {
preferredHeight: 100
Label {
text: ListItemData.title
verticalAlignment: VerticalAlignment.Center
}
Divider {}
}
}
]
}
희망이 당신이 작동하는 방법의 아이디어를했다. 실제로, XML을 사용하여 - 만약 내가 제대로 이해하고
감사합니다, 나는 이미 유사한 접근 방식을 사용하고 있습니다 사용하여 달성 할 수있다합니다. 그러나 이제는 데이터가 동적으로 (실행 시간에 변경 될 수 있습니까?) 데이터 모델이이 경우에 사용할 수있는 상황으로 되돌릴 필요가 있습니다. 또는 그러한 경우에해야 할 일은 무엇입니까? 감사. – user2054339
안녕하세요, 데이터가 런타임에 제공되는 경우 데이터 모델로 XML을 사용할 수없는 이유는 무엇입니까? 고맙습니다. – user2054339
런타임에 파일을로드하려면 C++ 코드를 사용하여 파일을로드해야하므로 XMLDataAccess (http://developer.blackberry.com/cascades/reference/bb__data__xmldataaccess.html)를 사용하여 해당 내용을 DataModel로 변환 할 수 있습니다 . –