В приложениях Android, таких как Twitter (официальное приложение), когда вы сталкиваетесь с ListView, вы можете опустить его (и он отскочит назад после освобождения), чтобы обновить содержимое.
Интересно, как, по вашему мнению, лучше всего это осуществить?
Некоторые возможности, о которых я мог подумать:
- Элемент поверх ListView - однако я не думаю, что прокрутка назад к позиции элемента 1 (на основе 0) с анимацией в ListView - простая задача.
- Другой вид за пределами ListView - но мне нужно позаботиться о перемещении позиции ListView вниз, когда он тянется, и я не уверен, сможем ли мы обнаружить, действительно ли при касании перетаскиванием к ListView действительно прокручиваются элементы в ListView.
Любые рекомендации?
PS Интересно, когда будет опубликован официальный исходный код приложения Twitter. Было упомянуто, что это будет выпущено, но прошло 6 месяцев, и мы не слышали об этом с тех пор.
android
listview
android-listview
pull-to-refresh
Рэнди Сугианто 'Юку'
источник
источник
Ответы:
Наконец, Google выпустил официальную версию библиотеки для обновления!
Он вызывается
SwipeRefreshLayout
внутри библиотеки поддержки, а документация здесь :Добавьте
SwipeRefreshLayout
в качестве родительского представления, которое будет рассматриваться как обновление для обновления макета. (Я взялListView
в качестве примера, это может быть любоеView
подобноеLinearLayout
иScrollView
т. Д.)Добавить слушателя в свой класс
Вы также можете позвонить
pullToRefresh.setRefreshing(true/false);
согласно вашему требованию.ОБНОВИТЬ
Библиотеки поддержки Android устарели и были заменены на AndroidX. Ссылку на новую библиотеку можно найти здесь .
Также вам необходимо добавить следующую зависимость в ваш проект:
ИЛИ
Вы можете перейти к Refactor >> Migrate to AndroidX, и Android Studio будет обрабатывать зависимости для вас.
источник
Я предпринял попытку реализовать компонент «Обновление до обновления», он далек от завершения, но демонстрирует возможную реализацию, https://github.com/johannilsson/android-pulltorefresh .
Основная логика реализована в
PullToRefreshListView
том, что расширяетсяListView
.Внутренне он управляет прокруткой представления заголовка с помощьюТеперь виджет обновлен с поддержкой 1.5 и более поздних версий, пожалуйста, прочтите README для поддержки 1.5.smoothScrollBy
(Уровень API 8).В ваших макетах вы просто добавляете это так.
источник
Я также реализовал надежную библиотеку PullToRefresh для Android с открытым исходным кодом, простую в использовании и настраиваемую. Вы можете заменить свой ListView на PullToRefreshListView, как описано в документации на странице проекта.
https://github.com/erikwt/PullToRefresh-ListView
источник
Я думаю, что самый простой способ - это предоставить библиотеку поддержки Android:
android.support.v4.widget.SwipeRefreshLayout;
после того, как это будет импортировано, вы можете определить свой макет следующим образом:
Я предполагаю, что вы используете представление рециркулятора вместо просмотра списка. Тем не менее, просмотр списка по-прежнему работает, поэтому вам просто нужно заменить recyclerview на просмотр списка и обновить ссылки в коде Java (фрагмент).
Во фрагменте своей деятельности вы сначала реализуете интерфейс
SwipeRefreshLayout.OnRefreshListener
: i, eНадеюсь, это поможет массам
источник
setRefreshing
: «Не вызывайте это, когда обновление инициируется жестом смахивания», как описано в developer.android.com/reference/android/support/v4/widget/…В этой ссылке вы можете найти ответвление известного
PullToRefresh
представления, в котором есть новые интересные реализации, такие какPullTorRefreshWebView
или,PullToRefreshGridView
или возможность добавитьPullToRefresh
нижний край списка.https://github.com/chrisbanes/Android-PullToRefresh
И лучшее из того, что идеально работает в Android 4.1 (нормальное
PullToRefresh
не работает)источник
У меня есть очень простой способ сделать это, но теперь я уверен, что это надежный способ. Есть мой код PullDownListView.java
Вам просто нужно реализовать ListViewTouchEventListener в вашей деятельности, где вы хотите использовать этот ListView и установить слушателя
У меня это реализовано в PullDownListViewActivity
Меня устраивает :)
источник
Для реализации Android Pull-to-Refresh попробуйте этот кусок кода,
Класс деятельности:
источник
Никто не упомянул новый тип «Подтянуть для обновления», который отображается в верхней части панели действий, как в приложении Google Now или Gmail.
Есть библиотека ActionBar-PullToRefresh, которая работает точно так же.
источник
Обратите внимание, что при реализации на Android и WP возникают проблемы с UX.
«Отличный показатель того, почему дизайнеры / разработчики не должны реализовывать функцию« pull-to-refresh »в стиле приложений iOS, - это то, как Google и их команды никогда не используют функцию« pull-to-refresh »на Android, пока они используют ее в iOS».
https://plus.google.com/109453683460749241197/posts/eqYxXR8L4eb
источник
Если вы не хотите, чтобы ваша программа выглядела как программа для iPhone, которая принудительно встроена в Android, стремитесь к более естественному внешнему виду и сделайте что-то похожее на Gingerbread:
источник
Я написал компонент для обновления для обновления здесь: https://github.com/guillep/PullToRefresh. Это событие работает, если в списке нет элементов, и я протестировал его на> = 1.6 телефонах Android.
Любое предложение или улучшение приветствуется :)
источник
Я думаю, что лучшая библиотека: https://github.com/chrisbanes/Android-PullToRefresh .
Работает с:
источник
Чтобы получить последнюю версию Lollipop Pull-To Refresh:
android.support.v4.widget.SwipeRefreshLayout
плюсandroid.support.v4.widget.SwipeRefreshLayout.OnRefreshListener
Подробное руководство можно найти здесь: http://antonioleiva.com/swiperefreshlayout/
Плюс к ListView рекомендую прочитать
canChildScrollUp()
в комментариях;)источник
Очень интересный Pull-to-Refresh от Yalantis . Gif для iOS, но вы можете проверить это :)
источник
Сначала мы должны знать, что такое Pull для обновления макета в Android. мы можем вызвать тянуть, чтобы обновить в Android, как пролистывание, чтобы обновить. когда вы проводите пальцем по экрану сверху вниз, он выполняет некоторые действия, основанные на setOnRefreshListener.
Вот учебник, который демонстрирует, как реализовать Android Pull для обновления. Надеюсь, это поможет.
источник