点击列表视图中的事件

时间:2016-12-09 22:36:28

标签: android listview nativescript

我在我的nativescript项目中使用list-view,我想处理list-view中特定对象的tap事件。 我们假设我们有这个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对象而不是我点击的标签。 有谁知道如何设置这个?谢谢。

1 个答案:

答案 0 :(得分:1)

您只需为每个标签单独设置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
}