|
|
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
Все доброго дня. После перевода проекта на Java 8 стал наблюдать интересную проблему, решение которой не могу найти. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. класс Reference переопределяет ObservableList. Выводит либо ref, либо filtered - если не пустой. Есть Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Вопрос: как избавиться от фантомной записи в ListView? Заранее благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 15:30 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
Ну, так ключевая проблема в цепочке r.setFilter(p1); -> ListChangeListener.onChanged() её и надо дебажить как реализован setFilter() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:02 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. В том то и дело, что в данных все красиво, и после list.setItems(r); в методе list.getItems(); я вижу только 1 элемент. Так же при попытке list.getItems().remove(1); что не удивительно выпадает исключение. В самом Reference я переопределил все методы списка, чтобы они возвращали значения из нужного списка (или ref или filtered) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:09 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
danatrielВ том то и дело, что в данных все красиво, и после list.setItems(r); в методе list.getItems(); я вижу только 1 элемент. Это данные. А события не видно! При изменении фильтра нужно собщить слушателям списка, что список изменился. Где это происходит? ListView вешает своего слушаетеля на Reference вот в этой строке Код: java 1. Вопрос. Как именно метод setFilter() вызывает этого слушателя? Я так думаю, что стоило иметь что-то такое: Код: java 1. 2. 3. 4. 5. 6. applyFilter - это ваш метод, который реализует фильтрацию, но как результат возвращает данные о том что и как отфильтровалось. Пихать сложную логику в анонимные классы и лямбды считаю ошибочным стилем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:23 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, спасибо, вроде разобрался. Слушатель на filtered не вешается, в этом то и ошибка наверно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:27 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
danatrielспасибо, вроде разобрался. Слушатель на filtered не вешается, в этом то и ошибка наверно Нет. Ошибка в том что класс декларирует что он ObservableList, но фактически ничего для реализации именно Observable не делает. Меня сильно смущает попытка показывать либо один либо другой список. Так как реализации size\get не достаточно. Нужно правильно делегировать и другие методы. Особенно те которые связаны с событиями. Поэтому я такой задумки не понимаю совершенно. ИМХО, ListView должен всегда показывать filteredList, а тот должен уже быть отображением referenceList либо полным, либо урезаным. Такое решени, ИМХО было бы намного проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:42 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
Собственно http://docs.oracle.com/javase/8/javafx/api/javafx/collections/transformation/FilteredList.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:45 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я пробовал в ListView передавать и filtered - результата так же не было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:47 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, но Reference переделаю по Вашему совету, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2014, 16:50 |
|
||
|
магия Java FX8 или.. (ListView)
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, День добрый! А проблема то была вообще банальной, как оказалось, у меня CellFactory был не дописан, вот он и не убирал фантомные строки:), а так все работало, но тем не менее, во время поиска этой глупости я перевел отображение справочников на FilteredList, что нравится мне на много больше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2014, 11:03 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38743919&tid=2126616]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 483ms |

| 0 / 0 |
