点击列表视图中的事件

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
}