点击列表视图中的事件
Tap on event inside List-View
我在我的 nativescript 项目中使用了一个列表视图,我想处理列表视图中特定对象的点击事件。
假设我们有这个 xml:
<ListView items="{{ friends }}">
<ListView.itemTemplate>
<StackLayout>
<Label id="lbl_0" text="Say Hello!"/>
<Label id="lbl_1" text="Say Goodbye!"/>
</StackLayout>
</ListView.itemTemplate>
</ListView>
现在,如果我想为列表中的每个项目激活一个用于点击 lbl_0 的处理程序和一个用于 lbl_1 的不同处理程序,我该如何告诉我的列表视图去做这个。
我试过这段代码:
listView.on(listViewModule.ListView.itemTapEvent, function (args: listViewModule.ItemEventData) {
var tappedItemIndex = args.index;
var tappedItemView = args.view;
// Do someting
});
但 tappedItemView 包含 stacklayout 对象而不是我单击的标签。
任何人都知道如何设置这个?谢谢。
你只需要为每个标签单独设置tap event
,也适用于其他UI组件(例如按钮):
<ListView items="{{ friends }}">
<ListView.itemTemplate>
<StackLayout>
<Label id="lbl_0" text="Say Hello!" tap="sayHello"/>
<Label id="lbl_1" text="Say Goodbye!" tap="sayGoodbye"/>
</StackLayout>
</ListView.itemTemplate>
</ListView>
然后在js文件中:
function sayHello(args) {
// Your code
}
exports.sayHello = sayHello;
或 ts:
export function sayHello(args) {
// Your code
}
我在我的 nativescript 项目中使用了一个列表视图,我想处理列表视图中特定对象的点击事件。 假设我们有这个 xml:
<ListView items="{{ friends }}">
<ListView.itemTemplate>
<StackLayout>
<Label id="lbl_0" text="Say Hello!"/>
<Label id="lbl_1" text="Say Goodbye!"/>
</StackLayout>
</ListView.itemTemplate>
</ListView>
现在,如果我想为列表中的每个项目激活一个用于点击 lbl_0 的处理程序和一个用于 lbl_1 的不同处理程序,我该如何告诉我的列表视图去做这个。 我试过这段代码:
listView.on(listViewModule.ListView.itemTapEvent, function (args: listViewModule.ItemEventData) {
var tappedItemIndex = args.index;
var tappedItemView = args.view;
// Do someting
});
但 tappedItemView 包含 stacklayout 对象而不是我单击的标签。 任何人都知道如何设置这个?谢谢。
你只需要为每个标签单独设置tap event
,也适用于其他UI组件(例如按钮):
<ListView items="{{ friends }}">
<ListView.itemTemplate>
<StackLayout>
<Label id="lbl_0" text="Say Hello!" tap="sayHello"/>
<Label id="lbl_1" text="Say Goodbye!" tap="sayGoodbye"/>
</StackLayout>
</ListView.itemTemplate>
</ListView>
然后在js文件中:
function sayHello(args) {
// Your code
}
exports.sayHello = sayHello;
或 ts:
export function sayHello(args) {
// Your code
}