Во-первых, официальной реализации свайпа (жест влево и/или право на элементе списка) для ListView или RecyclerView, вероятно, не существует (мне найти не удалось).
Во-вторых, неофициальных реализаций на Гитхабе много, и они лишь чуть менее чем полностью являют собой ад и Израиль. Потому что а) тащат за собой массу левых зависимостей (от, в целом, безобидного, хотя и нелюбимого мною ButterKnife и до, я не шучу, "клёвых либ знакомого однокурсника" автора библиотеки), б) написаны в массе своей студентами-раздолбаями, которые плевать хотели на людей, которым придётся создавать объекты с названиями типа YoYo, BothSidesSwipeTouchListViewListener и т.п., а потом с удивлением и матом писать класс типа MyBothSidesSwipeListView, унаследованный внезапно от
Как сказал пользователям своей либы китайский студент @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(), а также сделал класс адаптера интерфейсом, каковым он, по сути своей, является.