Em aplicativos Android como o Twitter (aplicativo oficial), quando você encontra um ListView, pode puxá-lo para baixo (e ele se recupera quando lançado) para atualizar o conteúdo.
Gostaria de saber qual é a melhor maneira, na sua opinião, de implementar isso?
Algumas possibilidades que eu poderia pensar:
- Um item no topo do ListView - no entanto, não acho que rolar para a posição 1 do item (com base em 0) com animação no ListView é uma tarefa fácil.
- Outra exibição fora do ListView - mas preciso cuidar para mover a posição do ListView para baixo quando ela é puxada, e não tenho certeza se podemos detectar se os toques de arrastar para o ListView ainda rolam realmente os itens no ListView.
Alguma recomendação?
PS Gostaria de saber quando o código fonte oficial do aplicativo do Twitter é lançado. Foi mencionado que será lançado, mas já se passaram 6 meses e não ouvimos falar disso desde então.
android
listview
android-listview
pull-to-refresh
Randy Sugianto 'Yuku'
fonte
fonte
Respostas:
Finalmente, o Google lançou uma versão oficial da biblioteca pull-to-refresh!
É chamado
SwipeRefreshLayout
, dentro da biblioteca de suporte, e a documentação está aqui :Adicione
SwipeRefreshLayout
como pai da vista, que será tratado como uma atração para atualizar o layout. (TomeiListView
como exemplo, ele pode ser qualquerView
comoLinearLayout
,ScrollView
etc.)Adicione um ouvinte à sua turma
Você também pode ligar
pullToRefresh.setRefreshing(true/false);
conforme sua exigência.ATUALIZAR
As bibliotecas de suporte do Android foram descontinuadas e substituídas pelo AndroidX. O link para a nova biblioteca pode ser encontrado aqui .
Além disso, você precisa adicionar a seguinte dependência ao seu projeto:
OU
Você pode ir para Refatorar >> Migrar para AndroidX e o Android Studio manipulará as dependências para você.
fonte
Fiz uma tentativa de implementar um componente pull to refresh, está longe de ser completo, mas demonstra uma possível implementação, https://github.com/johannilsson/android-pulltorefresh .
A lógica principal é implementada nesse
PullToRefreshListView
sentidoListView
.Internamente, ele controla a rolagem de uma visualização de cabeçalho usandoO widget agora está atualizado com suporte para 1.5 e posterior, por favor leia o README para suporte a 1.5.smoothScrollBy
(Nível 8 da API).Nos seus layouts, você simplesmente o adiciona assim.
fonte
Também implementei uma biblioteca PullToRefresh robusta, de código aberto, fácil de usar e altamente personalizável para Android. Você pode substituir seu ListView pelo PullToRefreshListView, conforme descrito na documentação na página do projeto.
https://github.com/erikwt/PullToRefresh-ListView
fonte
A maneira mais fácil que eu acho que é fornecida pela biblioteca de suporte do Android:
android.support.v4.widget.SwipeRefreshLayout;
depois de importado, você poderá definir seu layout da seguinte maneira:
Presumo que você use a exibição do reciclador em vez da exibição de lista. No entanto, o listview ainda funciona, então você só precisa substituir a recyclerview pelo listview e atualizar as referências no código java (fragmento).
No fragmento de atividade, você primeiro implementa a interface
SwipeRefreshLayout.OnRefreshListener
: i, eEspero que isso ajude as massas
fonte
setRefreshing
: "Não chame isso quando atualização é acionado por um gesto swipe", conforme descrito no developer.android.com/reference/android/support/v4/widget/...Nesse link, você encontra uma bifurcação da famosa
PullToRefresh
exibição que possui novas implementações interessantes comoPullTorRefreshWebView
ouPullToRefreshGridView
ou a possibilidade de adicionar umaPullToRefresh
na borda inferior de uma lista.https://github.com/chrisbanes/Android-PullToRefresh
E o melhor é que funciona perfeitamente no Android 4.1 (o normal
PullToRefresh
não funciona)fonte
Eu tenho uma maneira muito fácil de fazer isso, mas agora com certeza é a maneira infalível Existe o meu código PullDownListView.java
Você só precisa implementar o ListViewTouchEventListener em sua atividade em que deseja usar esse ListView e definir o ouvinte
Eu o implementei em PullDownListViewActivity
Funciona para mim :)
fonte
Para implementar o Pull-to-Refresh do Android, tente este código,
Classe de atividade:
fonte
Ninguém mencionou o novo tipo de "Puxar para atualizar", exibido na parte superior da barra de ação, como no aplicativo Google Now ou Gmail.
Existe uma biblioteca ActionBar-PullToRefresh que funciona exatamente da mesma maneira.
fonte
Observe que há problemas de UX com os quais lidar ao implementar no Android e no WP.
"Um ótimo indicador de por que os designers / desenvolvedores não devem implementar o pull-to-refresh no estilo que os aplicativos iOS fazem é como o Google e suas equipes nunca usam o pull-to-refresh no Android enquanto o usam no iOS".
https://plus.google.com/109453683460749241197/posts/eqYxXR8L4eb
fonte
Se você não deseja que seu programa se pareça com um programa do iPhone que se encaixa com força no Android, procure uma aparência mais nativa e faça algo semelhante ao Gingerbread:
fonte
Escrevi um pull para atualizar o componente aqui: https://github.com/guillep/PullToRefresh Funciona evento se a lista não tiver itens e testei em> = 1.6 telefones Android.
Qualquer sugestão ou melhoria é apreciada :)
fonte
Acho que a melhor biblioteca é: https://github.com/chrisbanes/Android-PullToRefresh .
Funciona com:
fonte
Para obter a atualização mais recente do Lollipop Pull-To:
android.support.v4.widget.SwipeRefreshLayout
maisandroid.support.v4.widget.SwipeRefreshLayout.OnRefreshListener
Guia detalhado pode ser encontrado aqui: http://antonioleiva.com/swiperefreshlayout/
Além disso, para o ListView, eu recomendo ler
canChildScrollUp()
nos comentários;)fonte
Pull-to-Refresh muito interessante da Yalantis . Gif para iOS, mas você pode conferir :)
fonte
Primeiro, devemos saber o que é o Pull para atualizar o layout no Android. podemos chamar pull para atualizar no Android como deslizar para atualizar. quando você desliza a tela de cima para baixo, ela executa alguma ação com base em setOnRefreshListener.
Aqui está o tutorial que demonstra como implementar o pull Android para atualizar. Eu espero que isso ajude.
fonte