Blackberry 10 Cascades ListView visible items

Я использую список, чтобы показать пользователю некоторые сообщения, и я хочу пометить эти сообщения как прочитанные, когда они появляются на экране. Для этого мне нужно было бы знать, отображаются ли они или нет. Это можно сделать? Я знаю о firstvisibleItem(), однако высота сообщений не является статической, поэтому это решение не решит мою проблему.

Есть идеи?

Спасибо


person Filipe Figueiredo    schedule 11.04.2014    source источник


Ответы (2)


Раньше я не работал с Blackberry, но работаю с QML. Из того, что я понял из вашего вопроса, вам нужно отличать прочитанные сообщения от непрочитанных, скажем, по цвету. первое, что пришло мне в голову, это сделать флаг в вашей модели списка, который вы можете установить из делегата, если делегат определенного индекса открыт. Надеюсь, вы поняли, что я имею в виду.

person Baso    schedule 11.04.2014
comment
Привет! Спасибо за ответ. Я думаю, что структура списка каскадов (используемая BB10) не имеет делегата (developer.blackberry.com/native/reference/cascades/). Как я сказал выше, когда элемент виден в списке, сообщение читается. Мне просто нужно поймать этот момент! Я думал о чем-то в JS, о какой-то функции, которая могла бы запускаться, когда элемент виден на экране. Спасибо за помощь - person Filipe Figueiredo; 12.04.2014

Я не знаю, сможете ли вы сделать это с помощью ListView. Он предназначен для эффективной обработки очень длинных списков, не обязательно для отслеживания того, что было или не было отображено. Есть три метода, на которые я бы обратил внимание, если бы пытался решить эту проблему:

  1. Используйте ListItemProvider, чтобы отслеживать, когда ListView вызывает отображаемый объект, связанный со списком. Это, вероятно, не будет работать очень хорошо, потому что ListView поддерживает визуальные элементы для элементов до и после тех, которые фактически находятся на экране.

  2. Используйте ListItemTypeMapper. Те же комментарии для ListItemProvider.

  3. Используйте LayoutUpdateHandler. Я использовал их, чтобы узнать, где и насколько велики мои пользовательские элементы управления. Я никогда не использовал их в ListView, поэтому я не знаю, запускается ли сигнал в подходящее время, чтобы узнать, когда элемент управления прокручивается и выходит из поля зрения.

person Richard    schedule 12.04.2014