#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, а затем получите метку bygetViewById
. После этого вы можете получить текст4. не могли бы вы объяснить на примере? Это будет полезно.
5. ваш XML будет выглядеть следующим образом:
<StackLayout tap="brand"> <Label id="test" /> </StackLayout>
. Затемvar layout = args.object
, наконецvar label = layout.getViewById("test")
. Вы получаете label, вы получите label.text