我试图弄清楚如何使用NativeScript的ListView,我无法弄清楚如何使用。我还没有找到任何好的教程,真的需要帮助。我需要能够在NativeScript中显示和更新(添加和减去项目)ListView。提前谢谢!
答案 0 :(得分:2)
你可以找到关于ListView here的所有内容,但我将演示我在我的应用中使用的ListView练习。我正在使用MVC结构,因此我们将page.xml
,page.js
和page-viewmodel.js
。在page.xml
中,我们希望有一个像这样的列表视图:
<Page>
<ListView items="{{ myItems }}" loadMoreItems="loadMore">
<ListView.itemTemplate>
<Label text="{{ message }}" textWrap="true" />
</ListView.itemTemplate>
</ListView>
</Page>
<ListView.itemTemplate>
是您为数据项目定义原型的地方。您可以使用普通数组,但我建议使用名为ObservableArray
的内置类,以便以后以编程方式更改任何项目或任何属性。
在模型中,page-viewmodel.ts
,我们有:
var Observable = require("data/observable").Observable;
var ObservableArray = require("data/observable-array").ObservableArray;
public class PageViewModel extends Observable {
private _myItems = new ObservableArray<MyItem>()
get myItems(): {
return this._myItems
}
public loadItems() {
var dataArray = ["Red", "Blue", "Green"];
for (var i in dataArray) {
var item = MyItem(dataArray[i])
this._myItems.push(item);
}
}
}
var pageViewModel = new PageViewModel();
public class MyItem extends Observable {
public message: String;
constructor(value) {
this.message = value;
}
}
最后,在page.ts
的控制器中:
import {pageViewModel} from "./page-viewmodel"
exports function pageLoaded(args) {
var page = args.object;
page.bindingContext = pageViewModel
}
exports function loadMore(args) {
pageViewModel.loadItems();
}
总之,您可以在XML中定义ListView及其原型。之后,viewmodel
(它是一个Observable对象)处理数据(添加项目,删除项目,从后端加载项目等)。最后,将viewmodel
导入控制器(page.js)并绑定到page.bindingContext
,以便XML
可以接收数据
page.js
的外观如下:
var pageViewModel = require("./page-viewmodel");
function pageLoaded(args) {
var page = args.object;
page.bindingContext = pageViewModel
}
exports.pageLoaded = pageLoaded;