Денис Загаевский: посмотрю в эту сторону.. я просто с шарпа пришел, и для меня андроид сдк нечто новое. не знаю его тонкостей, как и нюансов джавы. Скажите пожалуйста, можно ваш ящик попросить, пару вопросов задать?
Олег Гамега Вероятно, вы правы. Я сильно поспешил. Сейчас буду делать полный рефактор кода и архитектуры. Уже знаю где у меня беда.
Насчет долгого заполнения. Дело в том, что я заполняю его по мере поступления данных из провайдера, который в свою очередь рекурсивным методом сканирует файловую систему в отдельном потоке. Есть событие вроде OnNewFileFound(File file), фрагмент подписан на это событие. Каждый раз когда оно возникает, я добавляю найденный файл в адаптер листа и делаю .notifyDataSetChanged();. Немного позже, я нашел проблему связанную с этим подходом. Если, предположим, на мощном телефоне рекурсивное сканирование будет проходить очень быстро, и следовательно событие OnNewFile... будет вызываться очень часто через очень короткие промежутки времени - то начинает тупить отображение, насколько я понял из-за большой нагрузки на .notifyDataSetChanged();.
Я сделал немного по другому. Создал Queue, и таймер в фрагменте. Когда возникает событие, я помещаю новый файл в очередь, тем временем таймер время от времени, с неким промежутком (200-400 мс) затягивает новые данные из очереди, добавляет их в адаптер, и после чего делает .notifyDataSetChanged();. Так работает, как мне показалось лучше и правильнее, но в сумме время работы осталось прежним. Лист как заполнялся долго, так и заполняется. Сейчас разговор идет примерно о 200-300 записях. Странно было то, что даже не используя рекурсию, а считывая построчно данные для листа из текстового файла - дело быстрее не пошло. Всё равно долго. Храню я не такие уж и тяжелые данные. Чек бокс, и пара текст боксов.
Но.. у меня уже есть несколько подозрений на этот счет. Сейчас буду исправлять.
belozerow Я просто с шарпа, в принципе не спорю, логика везде одна, но мне малость тяжело дается логика взаимодействия модели данных в андроиде, и тонкости самой джавы. Потому вот и спотыкаюсь. Спасибо вам большое)
Я вот еще подумал, имеет ли право на жизнь синглтон? Что то типа глобального поставщика данных. Где надо положил, где надо взял.
Подскажите, каким образом обращаться скажем из фрагмента к инстансу класса в главном активити? Допустим, у меня вот в классе активити есть некий класс провайдер каких либо данных, которые мне необходимо пихать в seekBar. Если бы я делал это в классе активити, я бы просто написал findViewById(R.id.seekBar).setMax(myFooProvider.getMax()); - ну, грубо говоря. Каким же образом это сделать в фрагменте, если инстанс класса-провайдера мне !необходимо! хранить в классе активити, ибо при смене фрагментов - они удаляются из памяти. А инстанс провайдера должен работать независимо от того, какой сейчас фрагмент активен, ибо в нем происходят фоновые действия.
Я, конечно, могу делать по сути тоже самое в активити, а не в фрагменте
(я об этом:findViewById(R.id.seekBar).setMax(myFooProvider.getMax()); ), а даже пытался, но поскольку seekBar находится в фрагменте А, при смене на фрагмент Б здесь вылетает null reference, ибо seekBaк, как я понял, выгружается из памяти, или типа того. Проверять на null или на активность фрагмента? А не накладно ли будет по процессорному времени, если скажем подобная проверка будет проходить раз в 50 миллисекунд? Или особо не играет?
Честно говоря, я это очень предполагал, к сожалению. Что же, печаль( Посмотрим, может еще добрые люди что-то подскажут. Или же придется тусоваться по полной xD
Эмин: ну почему же. На это задание можно ответить как на вопрос. Контекстом своего вопроса, я хотел сказать то, что перепробовал уже все что можно, и можно понять что в андроиде я нуб. И прошу расписать подробно, то есть, как прикрутить к андроид приложению опенсорсный тривью:
1. Зайти туда
2. Нажать то
3. Переключить это
4. Написать абракадабру
5. Profit