"Я нашел, как применить здесь нестирающиеся шины из полиструктурного волокна с вырожденными аминными связями и неполными кислородными группами. Но я не знаю пока, как использовать регенерирующий реактор на субтепловых нейтронах. Миша, Мишок! Как быть с реактором?" Присмотревшись к устройству, я без труда узнал велосипед.
(c) Понедельник начинается в субботу

Два часа убил - случайное дублирование строки <?xml version="1.0" encoding="utf-8"?> в XML файле может привести к совершенно загадочной ругани компилятора на ThreadPoolExecutionException'ы и отсутствие файлов, которые на самом деле существуют.

Казалось бы, такая мелочь: приделать свайп к списку элементов в мобильном приложении... Но мы все знаем, кто скрывается в таких вот мелочах.
Во-первых, официальной реализации свайпа (жест влево и/или право на элементе списка) для ListView или RecyclerView, вероятно, не существует (мне найти не удалось).
Во-вторых, неофициальных реализаций на Гитхабе много, и они лишь чуть менее чем полностью являют собой ад и Израиль. Потому что а) тащат за собой массу левых зависимостей (от, в целом, безобидного, хотя и нелюбимого мною ButterKnife и до, я не шучу, "клёвых либ знакомого однокурсника" автора библиотеки), б) написаны в массе своей студентами-раздолбаями, которые плевать хотели на людей, которым придётся создавать объекты с названиями типа YoYo, BothSidesSwipeTouchListViewListener и т.п., а потом с удивлением и матом писать класс типа MyBothSidesSwipeListView, унаследованный внезапно от ListView RecyclerView.
Как сказал пользователям своей либы китайский студент @daimajia : "Fuck you!" - думаю, это исчерпывающая характеристика подобных проектов и их авторов.
Ссылки на эти рассадники заразы я давать не буду, все желающие их легко найдут поиском по "listview swipe Android".

Ниже будут ссылки на адекватные opensource-реализации свайпов для списков в Андроиде, если мне таковые удастся найти (если вам такие известны - предлагайте в комментариях) :
#1 https://github.com/wdullaer/SwipeActionAdapter - адекватная либа, не требующая тонн оверхеда и левых зависимостей. Если у Вас ListActivity, то весь код умещается в пару методов (см. пример по ссылке), для ListView придётся написать самостоятельный класс, реализующий интерфейс Listener'а и проделать загадочное шаманство вида:
- передать адаптер и контекст в Listener (т.к. методам Listener'а они требуются),
- затем передать в адаптер сам Listener и ListView,
- и, наконец, назначить адаптер адаптером для ListView.
Но такая циклическая связь в коде - единственный недостаток данной библиотеки.
#2 https://github.com/imzhangshirong/SwipeListView - простое и почти чистое решение. К сожалению, автор не озаботил себя ни лицензированием своего кода, ни ссылкой на либу для Gradle. Но, в общем-то, оно и не требуется, т.к. вся "либа" состоит из 1 интерфейса, 2 классов и одного абстрактного класса. Почитав код по ссылке, Вы легко сможете написать своё собственное решение по аналогии.
Недостатки: нет. Даже комментарии на китайском не напрягают, т.к. код читаемый и логичный. Чисто из вкусовых соображений я бы заменил protected-переменные на private с геттерами и сеттерами, поменял название метода слушателя свайпов с onControlClick() на onSwipe(), а также сделал класс адаптера интерфейсом, каковым он, по сути своей, является.

@темы: Android

01:42 

Доступ к записи ограничен

Закрытая запись, не предназначенная для публичного просмотра

Google Spreadsheets имеют немало плюсов, но для программиста это ад немногим менее адовый, чем, скажем, мобильная разработка для Android. Интересно, все продукты Google такие?..

Во-первых, это JavaSсript, а где есть JavaSсript, там что?.. Вермишель из коллбеков.
Во-вторых, это JavaSсript не один, а два разных - есть GoogleScript и есть, собст-но, JavaSсript. А они разные, чувак, и об этих отличиях ты узнаешь в самых неожиданных местах своего кода...
В-третьих, это клиент-серверная архитектура кода, который ты запускаешь в своём браузере. Клиент-серверная, Карл! Твоя таблица и её скрипты - это сервер, а всплывающие формы - это его клиенты, ты должен писать их отдельно на разных языках программирования и обеспечить им интерфейсы асинхронного взаимодействия, как если бы они находились в разных галактиках... При этом сама таблица может являться клиентом относительно внешних источников и серверов Гугла. Электронная таблица - как микросервисная архитектура, а?
В-третьих, это чуть более чем полностью открытый код и открытые данные. Защитить какую-то существенную часть кода можно, инкапсулировав её в standalone, но это всё, что можно сделать для реализации данных ограниченного доступа.

Меня сегодня спросили, что такое клиентский код для Google-таблиц... вот что ответить человеку? Что тут целая иерархия из клиент-серверных отношений выстроена и таки надо разобраться какой "клиент" имеется в виду?

Казалось бы, как вообще можно сравнивать встроенную реализацию языка Visual Basic в продуктах MS Office с операционной системой для мобильных устройств? Но, давайте, на секунду абстрагируемся и посмотрим на них просто как на две технологии для разработки некоторого ПО в вакууме. Это, на мой взгляд, может оказаться небезинтересное наблюдение.

читать дальше

@темы: наболело

23:16 

Доступ к записи ограничен

Закрытая запись, не предназначенная для публичного просмотра

13:06 

Доступ к записи ограничен

Закрытая запись, не предназначенная для публичного просмотра

Тогда акаянный Диаволъ, хотя погубити весь род человическый, превратися в мышь и начя грысти дно ковчегу. Ной же помолися Богу, и пришед в ковчег лютый звѣрь и прыснув, из ноздри же его выскочиста котъ и кошка и удависта мышь ту. Повелѣнием Божиим не збысться злохитрьство дияволе, и оттоле начя быти коты.

(с) Апокриф «О потопе». По списку Сокращенной Палеи русской редакции (РНБ, собр. Софийское, № 1448, XVI в.)

Я так давно родился,
Что слышу иногда,
Как надо мной проходит
Студеная вода.
А я лежу на дне речном,
И если песню петь -
С травы начнем, песку зачерпнем
И губ не разомкнем.

Я так давно родился,
Что говорить не могу,
И город мне приснился
На каменном берегу.
А я лежу на дне речном
И вижу из воды
Далекий свет, высокий дом,
Зеленый луч звезды.

Я так давно родился,
Что если ты придешь
И руку положишь мне на глаза,
То это будет ложь,
А я тебя удержать не могу,
И если ты уйдешь
И я за тобой не пойду, как слепой,
То это будет ложь.

@темы: просто стихи