Я работаю над созданием адаптера представления списка, позволяющего смахнуть пальцем. Моя основная методология заключается в том, чтобы обернуть представление элемента списка как второе представление в ViewPager и предоставить необходимые обратные вызовы в прослушивателе изменения элемента ViewPager. С большим трудом я добился того, что переработчик View работает, как задумано, а также реализованы шаблоны ViewHolder и ViewBinder. Мне даже удалось удержать ListView от принятия сенсорных событий во время прокрутки ViewPager без необходимости создавать собственный подкласс ListView (я могу сделать все это из адаптера).
У меня возникают проблемы с тем, чтобы заставить работать селектор и OnItemClickListener
. После просмотра исходного кода ListView показалось, что путем переопределения метода ViewPager hasFocusable(), чтобы он всегда возвращал false (позже я вытащу это значение из дочернего представления), эти вещи должны были быть снова включены. К сожалению, это не случай. Я пробовал обходной путь setDecendantFocusability()
, и я все еще застрял.
Я хотел бы избежать расширения ListView, если это возможно, чтобы обеспечить максимальную модульность. По тем же причинам я не хочу добавлять селектор на фон ViewPager (если разработчик изменит селектор ListView, это не будет отражено). По сути, я хочу сделать код ViewPager прозрачным между ListView и дочерним представлением. Есть идеи?
TouchListView
, который я извлек из старой версии приложения AOSP Music, предлагает возможность перетаскивания элементов в сторону, чтобы удалить их. Начать с чего-то подобного будет лучше, чем пытаться взломатьViewPager
для этой роли. - person CommonsWare   schedule 18.12.2011