Nativescript: выберите уровень из Listview

#android #listview #nativescript

#Android #listview #nativescript

Вопрос:

Я хочу получить текст уровня при нажатии на listview (т.Е. На этот уровень).Я могу получить индекс этого уровня.Но я не могу получить текстовое поле уровня.

Вид:

 <Page loaded="loaded">
    <GridLayout>
        <ListView items="{{ categoryList }}" itemTap="brand">
            <ListView.itemTemplate>
                <Label text="{{ category }}" horizontalAlignment="left" verticalAlignment="center"  />
            </ListView.itemTemplate>
        </ListView>

    </GridLayout>
</Page>
  

Контроллер Js:

 function getBrand() {

 user.register();

}   

exports.brand=function (args){ 
    item=args.index;

    //what to put here to be able to get the level text property

    user.register(item);
}   
  

Ответ №1:

Отредактировано: вы можете поместить прослушиватель tap на метку внутри и получить ссылку через args :

В XML:

     <ListView items="{{ categoryList }}">
        <ListView.itemTemplate>
            <Label text="{{ category }}" tap="brand"/>
        </ListView.itemTemplate>
    </ListView>
  

Затем в js:

 exports.brand = function(args) {
    item = args.object;
    var text = item.text;
}
  

Комментарии:

1. Извините, мистер Динь Ле, он ведет себя странно. Иногда это работает для последнего уровня. иногда для среднего. иногда вообще не работает.

2. Проблема в том, что мне нужно щелкнуть по тексту. В противном случае он не будет работать.

3. Оберните весь пользовательский интерфейс внутри ListView.itemTemplate в Stacklayout. Затем args.object будет ссылка на этот макет. Вы установите id метку for, а затем получите метку by getViewById . После этого вы можете получить текст

4. не могли бы вы объяснить на примере? Это будет полезно.

5. ваш XML будет выглядеть следующим образом: <StackLayout tap="brand"> <Label id="test" /> </StackLayout> . Затем var layout = args.object , наконец var label = layout.getViewById("test") . Вы получаете label, вы получите label.text