Do desenvolvedor android ( Criando listas e cartões ):
O widget RecyclerView é uma versão mais avançada e flexível do ListView.
Tudo bem, parece legal, mas quando vi esse exemplo, fiquei muito confuso sobre a diferença entre os dois.
A imagem acima pode ser facilmente criada ListView
usando um adaptador personalizado.
Então, em que situação se deve usar RecyclerView
?
android
listview
android-recyclerview
Blaze Tama
fonte
fonte
Respostas:
RecyclerView
foi criado como umaListView
melhoria, portanto, sim, você pode criar uma lista anexada comListView
controle, mas usarRecyclerView
é mais fácil, pois:Reutiliza células ao rolar para cima / para baixo - isso é possível com a implementação do View Holder no
ListView
adaptador, mas era uma coisa opcional, enquanto naRecycleView
forma padrão de escrita do adaptador.Separa a lista de seu contêiner - para que você possa colocar itens da lista facilmente em tempo de execução nos diferentes contêineres (linearLayout, gridLayout) com a configuração
LayoutManager
.Exemplo:
ItemAnimator
.Há mais
RecyclerView
, mas acho que esses pontos são os principais.Portanto, para concluir,
RecyclerView
existe um controle mais flexível para lidar com "dados da lista" que segue padrões de delegação de preocupações e deixa para si apenas uma tarefa - itens de reciclagem.fonte
Para que as visualizações de lista tenham um bom desempenho, você precisará implementar o padrão de suporte, e isso é fácil de atrapalhar, especialmente quando você deseja preencher a lista com vários tipos diferentes de visualizações.
O RecyclerView integra esse padrão, dificultando a bagunça. Também é mais flexível, facilitando o manuseio de diferentes layouts, que não são lineares, como uma grade.
fonte
ListView
é o ancestral deRecyclerView
. Havia muitas coisas queListView
não fizeram ou não fizeram bem. Se você reunisse as deficiências doListView
e resolvesse o problema abstraindo os problemas em domínios diferentes, acabaria com algo como a exibição do reciclador. Aqui estão os principais pontos problemáticos do ListViews:Não aplicou a
View
reutilização para os mesmos tipos de itens (observe um dos adaptadores usados em aListView
, se você estudar o método getView, verá que nada impede que um programador crie uma nova exibição para cada linha, mesmo que uma seja passada através daconvertView
variável)Não impediu
findViewById
usos dispendiosos (mesmo que você estivesse reciclando visualizações, como observado acima, era possível que os desenvolvedores ligassem parafindViewById
atualizar o conteúdo exibido das visualizações filho. O principal objetivo doViewHolder
padrãoListViews
era armazenar em cache asfindViewById
chamadas. No entanto, isso era apenas disponível se você soubesse, pois não fazia parte da plataforma)Somente rolagem vertical suportada com vistas exibidas por linha (a vista do Recycler não se importa com o local onde as vistas são colocadas e como são movidas, ela é abstraída para um
LayoutManager
. Um recycler pode, portanto, suportar o tradicionalListView
como mostrado acima, bem como coisas comoGridView
, mas não se limita a isso, pode fazer mais, mas você precisa fazer o trabalho de programação para que isso aconteça).As animações a serem adicionadas / removidas não foram consideradas como um caso de uso. Dependia completamente de você descobrir como fazer isso (compare as classes RecyclerView. Adapter e notifique * as ofertas de métodos v. ListViews para ter uma idéia).
Em suma,
RecyclerView
é uma abordagem mais flexívelListView
, embora ainda seja necessário fazer mais codificação de sua parte.fonte
Resposta de Antonio leiva
RecyclerView
é realmente umpowerful view
do queListView
. Para mais detalhes, você pode visitar esta página .fonte
A seguir, são apresentados alguns pontos / diferenças importantes entre o RecyclerView e o ListView. Atenda sabiamente.
fonte
Grande vantagem:
ViewHolder
não está disponível por padrão emListView
. Nós estaremos criando explicitamente dentro do arquivogetView()
.RecyclerView
tem embutidoViewholder
.fonte
Além das diferenças acima, seguem-se mais algumas:
O RV separa a criação da visualização e a ligação de dados para visualização. No LV, é necessário verificar se o convertView é nulo ou não para a criação de visualização, antes de vincular dados a ele. Portanto, no caso de RV, a visualização será criada apenas quando for necessário, mas no caso de LV, pode-se perder a verificação do convertview e criar a visualização sempre.
Alternar entre Grade e Lista é mais fácil agora com o LayoutManager.
Não há necessidade de notificar e atualizar todos os itens, mesmo que apenas um item seja alterado.
Era preciso implementar o cache de visualização no caso de LV. É fornecido no RV por padrão. (Há diferença entre exibir cache e reciclagem.)
Animações de itens muito fáceis em caso de RV.
fonte
Vantagens do RecyclerView sobre a lista:
Contém o ViewHolder por padrão.
Animações fáceis.
Suporta layouts horizontais, de grade e escalonados
Vantagens do listView sobre o recyclerView:
Fácil de adicionar divisor.
Pode usar arrayAdapter embutido para listas simples e simples
Suporta cabeçalho e rodapé.
Suporta OnItemClickListner.
fonte
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
depois de fazer algo comorecyclerView = view.findViewById(R.id.feed);
8 diferenças entre RecyclerView e ListView
1. Padrão do ViewHolder
O padrão usado para reduzir as chamadas para findViewById () métodos .
No ListView, você pode criar facilmente uma lista sem usar o ViewHolder. Mas não no caso do RecyclerView.
2. Adaptador
Ambos são AdapterViews, sim. Funciona com base na classe do adaptador.
É fácil criar o ListView usando adaptadores padrão como ArrayAdapter, CursorAdapter, mas o RecyclerView fornece a classe RecyclerView.Adapter, Para criar uma nova classe de adaptador personalizada.
Você não pode usar o ArrayAdapter ou qualquer outro adaptador interno com o RecyclerView.
3. Disposição dos itens
Eu criei o ListView vertical em código simples e menos. Mas e se precisarmos criar um GridView?
O RecyclerView usa o LayoutManager para organizar seus itens. Existem 3 classes LayoutManager.
Animações
ListView não possui animações básicas. Mas o RecyclerView vem com animações simples.
Divisor
O android: divider e android: dividerHeight atributos ou setDivider (), setDividerHeight () ajudam a criar um divisor personalizado no ListView.
desde 25.1.0, você pode usar o DividerItemDecoration classe para criar um divisor simples.
Clique em Eventos
O RecyclerView não possui o OnItemClickListener , sim, isso é muito triste. Mas eles dão mais controle ao desenvolvedor, fornecendo RecyclerView.OnItemTouchListener.
Métodos de notificação
Você precisa chamar os métodos de notificação * adequados para executar as animações corretas. O RecylcerView possui muitos métodos de notificação * quando comparado ao ListView.
fonte
Eu acho que a principal e maior diferença que eles têm é que
ListView
procura a posição do item ao criar ou colocá-lo, por outro lado,RecyclerView
procura o tipo do item. se houver outro item criado com o mesmo tipoRecyclerView
, não o crie novamente. Ele solicita o primeiro adaptador e, em seguida, pede ao pool de reciclagem, se o pool reciclado diz "sim, eu criei um tipo semelhante a ele", entãoRecyclerView
não tenta criar o mesmo tipo.ListView
não possui esse tipo de mecanismo de agrupamento.fonte
Na minha opinião,
RecyclerView
foi feito para resolver o problema com o padrão de reciclagem usado nas visualizações de lista porque estava dificultando a vida do desenvolvedor. Todos os outros que você poderia lidar com mais ou menos. Por exemplo, eu usar o mesmo adaptador paraListView
eGridView
não importa em ambos os pontos de vista dasgetView
,getItemCount
,getTypeCount
é usado por isso é o mesmo.RecyclerView
não é necessário se,ListView
comListAdapter
ouGridView
com adaptadores de grade, já estiver funcionando para você. Se você implementou corretamente oViewHolder
padrão em suas visualizações de lista, não verá grandes melhoriasRecycleView
.fonte
Eu trabalhei um pouco com
RecyclerView
e ainda prefiroListView
.Claro, os dois usam
ViewHolders
, então isso não é uma vantagem.A
RecyclerView
é mais difícil na codificação.A
RecyclerView
não contém um cabeçalho e rodapé, portanto é um sinal de menos.A
ListView
não requer a criação de um ViewHolder. Nos casos em que você deseja ter uma lista com seções ou subtítulos, seria uma boa ideia criar itens independentes (sem um ViewHolder), é mais fácil e não requer classes separadas.fonte
Portanto, se a sua preocupação é com eficiência, é uma boa ideia substituir um ListView por um RecyclerView.
fonte
Resposta simples: você deve usar o RecyclerView em uma situação em que deseja mostrar muitos itens e o número deles é dinâmico. O ListView deve ser usado apenas quando o número de itens é sempre o mesmo e está limitado ao tamanho da tela.
Você acha mais difícil porque pensa apenas com a biblioteca do Android em mente.
Hoje existem muitas opções que ajudam a criar seus próprios adaptadores, facilitando a criação de listas e grades de itens dinâmicos que você pode escolher, reordenar, usar animação, divisores, adicionar rodapés, cabeçalhos, etc.
Não se assuste e tente usar o RecyclerView, você pode começar a adorar fazer uma lista de 100 itens baixados da web (como notícias do facebook) em um ListView e um RecyclerView; você verá a diferença no UX (usuário). experiência) ao tentar rolar, provavelmente o aplicativo de teste será interrompido antes que você possa fazer isso.
Eu recomendo que você verifique essas duas bibliotecas para facilitar os adaptadores:
FastAdapter por mikepenz
FlexibleAdapter por davideas
fonte
Ver informações
O
RecyclerView
foi introduzido comAndroid 5.0 (Lollipop)
. está incluído na biblioteca de suporte . Portanto, é compatível com o nível 7 da API do Android.Da mesma forma que a idéia principal
ListView
,RecyclerView’s
é fornecer a funcionalidade de listagem de maneira amigável ao desempenho. A parte 'Reciclador' do nome dessa visualização não está lá por coincidência. ORecyclerView
pode realmente reciclar os itens com os quais está trabalhando atualmente. O processo de reciclagem é feito graças a um padrão chamado View Holder .Prós e contras de RecyclerView
Prós:
Contras:
Informações do ListView
Ele
ListView
existe desde o início do Android. Estava disponível mesmo emAPI Level 1
e tem o mesmo objetivo que oRecyclerView
.O uso do ListView é realmente muito simples. Nesse aspecto, não é como seu sucessor. A curva de aprendizado é mais suave que a do RecyclerView. Assim, é mais fácil de entender. Não precisamos lidar com coisas como o LayoutManager, o ItemAnimator ou o DiffUtil.
Prós e contras do ListView
Prós:
ExpandableListView
Contras:
fonte
Existem muitas diferenças entre o ListView e o RecyclerView, mas você deve estar ciente do seguinte, em particular:
fonte