Utilizando CardView, Material Design Android - Parte 4

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog. Você receberá um email de confirmação. Somente depois de confirma-lo é que poderei lhe enviar os conteúdos exclusivos.

Email inválido.
Blog /Android /Utilizando CardView, Material Design Android - Parte 4

Utilizando CardView, Material Design Android - Parte 4

Vinícius Thiengo
(13230) (63) (2)
Go-ahead
"Não podemos estar em modo de sobrevivência. Temos de estar no modo de crescimento."
Jeff Bezos
Kotlin Android
Capa do livro Desenvolvedor Kotlin Android - Bibliotecas para o dia a dia
TítuloDesenvolvedor Kotlin Android - Bibliotecas para o dia a dia
CategoriasAndroid, Kotlin
AutorVinícius Thiengo
Edição
Ano2018
Capítulos19
Páginas1035
Acessar Livro
Treinamento Oficial
Android: Prototipagem Profissional de Aplicativos
CursoAndroid: Prototipagem Profissional de Aplicativos
CategoriaAndroid
InstrutorVinícius Thiengo
NívelTodos os níveis
Vídeo aulas186
PlataformaUdemy
Acessar Curso
Receitas Android
Capa do livro Receitas Para Desenvolvedores Android
TítuloReceitas Para Desenvolvedores Android
CategoriaDesenvolvimento Android
AutorVinícius Thiengo
Edição
Ano2017
Capítulos20
Páginas936
Acessar Livro
Código Limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas599
Acessar Livro
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Conteúdo Exclusivo
Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
Email inválido

Opa, blz?

Nesse vídeo dou continuidade a série de vídeos sobre o Material Design no Android, dessa vez mostrando como utilizar o CardView (ao menos uma maneira). Nesse vídeo preferi mostrar também alguns aspectos que o guideline do Material Design põe como padrão no momento da implementação do CardView, como os espaçamentos entre views filhas do CardView, os posicionamentos dos elementos que são primários, secundários, ... os tamanhos de fonte e imagem (mídia, vídeo também). Fique atento quanto a utilização de alguns atributos, principalmente o atributo "cardMaxElevation" que não funcionou comigo quando no XML, somente quando utilizei ele via Java API (método setMaxCardElevation()) é que ele funcionou sem problemas. Os demais atributos comento bastante sobre eles no vídeo.

Enfim, no final tem uma implementação de um script que nos permite colocar corners do ImageView arredondadas de acordo com nossa escolha (no exemplo foram as do topo), além de esse script também redimensionar a imagem. Note que o script completo foi utilizado apenas em versões anteriores a API 21 devido aos problemas encontrados com o uso de imagens no CardView em versões anteriores a API 21. Mostrei o valor 14 para obter o tamanho correto que será utilizado na imagem, porém esse número é útil somente se você estiver implementando o mesmo tipo de layout (pelo menos com o CardView pegando todo a tela e as mesmas margens apresentadas no vídeo), caso contrário você terá de (via "força bruta") encontrar o número correto para teu layout ou então implementar um script diferente do apresentado. Mas é isso, vou evitar mais delongas e deixar você assistir ao vídeo.

O link para download do projeto se encontra logo abaixo no post.

Os links dos vídeos anteriores dessa série de Material Design no Android estão na sessão "Relacionado" do post.

Segue links apresentados no vídeo:

Página da classe CardView no site de documentação do Android.

Página de implementação do CardView com Material Design no site de documentação do Android.

Página de descrição do CardView (incluindo bons gráficos) no site de documentação do Xamarin Android.

Página de Cards no Guideline do Material Design.

Página do stackoverflow onde foi obtido o script de arredondamento de bordas de Bitmaps.

Vlw

Receba em primeira mão, e com prioridade, os conteúdos Android exclusivos do Blog.
Email inválido

Relacionado

APP Thiengo [Calopsita] 3.0APP Thiengo [Calopsita] 3.0Android
Toolbar, Material Design Android - Parte 1Toolbar, Material Design Android - Parte 1Android
RecyclerView, Material Design Android - Parte 2RecyclerView, Material Design Android - Parte 2Android
Animação, onLongPress e GridLayoutManager em RecyclerView, Material Design Android - Parte 3Animação, onLongPress e GridLayoutManager em RecyclerView, Material Design Android - Parte 3Android

Compartilhar

Comentários Facebook (5)

Comentários Blog (58)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
27/07/2017
Fala Thiengo, cara otimos videos para comunidade, se tivessemos mais profissionais como você seriamos bem melhores.

Cara você tem alguma video aula com a implementação dos CardView
https://material.io/guidelines/components/cards.html#cards-content-blocks

com esse layout: (Avatar, Title, and Subtitle area).
pudesse demonstrar ai agradeceria bastante.

Abraço e Otimo trabalho.

[]
Responder
Vinícius Thiengo (0) (0)
27/07/2017
Anderson, tudo bem?

Ainda não tenho nada sobre CardView Content Block. O máximo que cheguei com ele aqui no Blog e canal foi o uso também do Context Menu: http://www.thiengo.com.br/contextmenu-no-recyclerview-material-design-android-parte-17

Enquanto não falo nada sobre esse tipo de CardView aqui no Blog, veja se tem alguma API para card que facilite essa implementação em seu projeto, veja no link a seguir: https://android-arsenal.com/search?q=cardview

Abraço.
Responder
Lucas José (1) (0)
16/06/2016
Fala Thiengo! O problema é o seguinte, estou usando uma lista RecyclerView de CardView (conforme tu fez nessa app do vídeo) e implementei um Listener de click usando tua interface e o GestureDetector para detectar onde exatamente do CardView o usuário clicou conforme tu fez no vídeo sobre ContextMenu. Mas a ação desejada após o usuário clicar em cima de um ImageView especifico já capturado pelo GestureDetector seria trocar a Imagem somente desse ImageView dentro de tal posição dentro do RecyclerView. Isto é, se clicar no ImageView dentro do CardView da posição X, trocar o conteudo somente desse ImageView da posição X. Mas não consegui achar como fazer, passando por uma interface já tenho a View que guarda do  
View cv = grid.findChildViewUnder(e.getX(), e.getY());
e a posição dessa view pelo
.getChildPosition(v)
. Tu sabe como me ajudar?
Responder
Vinícius Thiengo (1) (0)
18/06/2016
Fala Lucas, blz?
Coloque o trecho de código que está lhe travando aqui, coloque tb a fonte da nova imagem (um ArrayList, um objeto, ...).

O que pode fazer é criar uma classe que herde de View, nela terá apenas dois atributos além dos métodos e atributos obrigatórios. Um será para a view que já é passada como parâmetro no onClickListener() o outro será sua View (ImageView) que será alterada. Abraço
Responder
Lucas José (1) (0)
18/06/2016
Fale Thiengo! Acabei conseguindo de um jeito mais simples do que eu esperava, passando a position do cardview dentro do recyclerview e recuperando a view certa usando  
 View view = rv.getLayoutManager().findViewByPosition(position); 
(onde rv é o RecyclerView da Activity) e em seguida setar a imagem normalmente a partir dessa nova View
((ImageView)(view.findViewById(R.id.img_gesto))).setImageResource(R.drawable.img_nova); 
. Obrigado pela atenção Thiengo! Abraço.
Responder
Vinícius Thiengo (0) (0)
25/06/2016
Show de bola Lucas, abraço
Responder
29/04/2016
Olá Thiengo.
Venho seguindo seus vídeos sobre o Material Design e percebi que vc colocou o ItemClick no CardView e que quando clicado abre mais detalhes sobre o carro.

Mas não encontrei o vídeo onde vc ensina essa implementação. Só encontrei o vídeo onde vc colocou um Toast no itemClick.

Obrigado.
Responder
Vinícius Thiengo (0) (0)
30/04/2016
Fala Thiago, blz?
Se não me engano é nesse vídeo (http://www.thiengo.com.br/utilizando-transitions-material-design-android-parte-10 ) ou anteriores a ele. Abraço
Responder
Rafael (3) (0)
31/03/2016
Olá Thiengo, tudo bem?
Estou com problema em redimensionar imagem, já usei os  atributos android:scaleType="center" e android:adjustBounds="true" e não deu certo, as imagem que carrego são de tamanhos diferentes e são cortadas no topo e em baixo.
Outro problema que enfrento é que ao rotacionar a atividade carrega novamente e da erro em doAfter(JSONArray jsonArray) na linha "position = auxPosition == 0 ? mList.size() : 0;" , tem como manter a atividade na rotação?
Obrigado
Responder
Vinícius Thiengo (1) (0)
02/04/2016
Fala Rafael, blz?
Junto aos vídeos acompanhe tb a versão mais atual da APP do vídeo, no GitHub (), pois mts erros foram corrigidos até a versão final no GitHub.

Quanto ao tamanho das imagens, tentou adjustViewBounds? Uma solução antiga e core que pode ainda valer (http://stackoverflow.com/a/8233084/2578331 ).

A melhor opção é fornecer mais de uma versão para a imagem, com tamanhos distintos. Abraço
Responder
23/03/2016
Olá Thiengo
Tenho várias imagens de tamanhos diferentes, gostaria de saber como faço para deixar essas imagens proporcionais. Como faço para colocar todas na mesma largura e proporcional na altura.
Obrigado
Responder
Vinícius Thiengo (1) (0)
24/03/2016
Fala Faio, blz?
Tente os atributos android:scaleType="center" e android:adjustBounds="true" para ver se funciona como precisa. Abraço
Responder
06/04/2016
Olá Thiengo, obrigado pela ajuda, estou usando o Fresco, e com esses atributos não consegui ajustar as imagens, se mais alguém tiver o mesmo problema consegui com essas dicas http://stackoverflow.com/questions/33955510/facebook-fresco-using-wrap-conent/34075281#34075281.
Mais uma dúvida, na rotação de tela não esta carregando novas imagens do servidor, na vertical funciona mas na horizontal apenas aparecem as imagem já carregadas.
Muito obrigado pelos vídeos e toda ajuda.
Forte abraço.
Responder
Vinícius Thiengo (0) (0)
10/04/2016
Fabio, a principio o que pode fazer é ter a imagem com o mesmo ratio, porém em tamanhos distintos, não necessariamente o tamanho para um device em especifico, pois sabemos que o Android roda em vários tipos de device. Com essas opções de imagens e os atributos já testados anteriormente será possível enquadrar a imagem corretamente. Abraço
Responder
10/11/2015
Eai Thiengo, blz?

Na implementaçao do cardView, estou usando o staggaredGridLayout, estou usando imagens 1:1 e mesmo  usando o alignParentTop no ImageView a imagem nao fica no topo do card, e usando o card com width e height match_parent, ele pega toda a tela do celular ao inves de ficar varios cards em grade... alguma soluçao?

Valeu
Responder
Vinícius Thiengo (0) (0)
11/11/2015
Fala Lucas, blz sim.
Tente colocando como atributo do ImageView utilizado o seguinte: android:scaleType="center" veja se assim vai sem problemas. Abraço
Responder
11/11/2015
Eu já tentei usar o scaleType, continuou na mesma, o cardView continua pegando toda a tela e a imagem não fica 1:1, ele corta uma parte dela... eu meio que estou fazendo testes de como vai ficar minha aplicação, segui o seus vídeo desde o Toolbar, RecyclerView e ai CardView, você usa a imagem 16:9, eu usei o 1:1 e ficou assim, se eu dou uma dimensão em dp para o card ele fica no tamanho que peço mas a imagem nao alinha no topo, e com match_parent ele pega todo, mesmo com wrap_content ele pega a tela inteira... fiquei meio perdido com isso agora
Responder
Vinícius Thiengo (0) (0)
14/11/2015
Lucas, se possível coloque um print do problema  em um servidor publico de imagens, para ter uma ideia melhor. E outra, no código mais atual da APP de carros (https://github.com/viniciusthiengo ), esse problema foi resolvido, no caso parei de tentar redimensionar a imagem, apenas setei os width e height do ImageView no card e utilizei i scaleType. Abraço
Responder
Vinícius Thiengo (0) (0)
14/11/2015
Responder
16/11/2015
Eai Thiengo, lendo alguns comentários aqui do blog eu achei uma solução, usei o adjustViewBounds no imageView e funcionou certinho...

muito obrigado pela atenção e parabéns pelo blog, abraço
Responder
25/10/2015
Thiengo, muito bom os vídeos , estou acompanhando e estou com um problema puxo imagens para um card view , utilizando o Picasso com URL e não consigo deixar a imagem com o tamanho do local pode me ajudar?
Responder
Vinícius Thiengo (0) (0)
30/10/2015
Fala Kaleb, blz?
Está utilizando no ImageView os atributos android:adjustViewBounds="true" android:scaleType="centerCrop" para conseguir que a imagem ocupe todo o espaço? Tente assim se ainda não estiver. Abraço
Responder
Alexandre Ferreira (1) (0)
03/10/2015
Bom dia Thiengo, gostaria de saber como faço para dar ação nos cardview, tenho um layout com dois botoes de ação um te fazer uma ligação e outro de mandar email. Isso dentro de uma lista onde tenho varios numeros e email.
Responder
Vinícius Thiengo (0) (0)
03/10/2015
Fala Alexandre, blz?
Vc consegue no Adapter de seu RecyclerView colocar um listener de click para esses buttons, porém vc pode acabar tendo problemas se ao mesmo tempo quiser colocar o listener de click no CardView por completo para abrir a Activity de detalhes do item, logo, nesse caso seria interessante colocar o listener de click em cada button e depois somente na parte de cima (ou de baixo, depende de seu layout) do CardView colocar o listener de click que abrirá o Activity de detalhes. No vídeo acima será o listener nos button que estariam abaixo da imagem, nesse caso para as ações de call e email, na imagem seria a chamada para a Activity de detalhes. Para colocar os cliques nos itens do CardView veja essa vídeo (http://www.thiengo.com.br/recyclerview-material-design-android-parte-2 ), o de cima tb tem.

Outra forma e provavelmente a mais interessante é a utilização de um ContextMenu, tem esse vídeo (http://www.thiengo.com.br/contextmenu-no-recyclerview-material-design-android-parte-17 ) onde mostro como coloca-lo no RecyclerView. Abraço
Responder
Paulo Henrique Alves (1) (0)
15/06/2015
Falae Thiengo, blz?
Parabéns pelo tutos! Estou acompanhando a séries de videos e estou curtindo.

Gostaria de informar que estou tomando o problema do espacamento no arredondamento quando utilizando a API 21 e 22. Para essas versões precisei utilizar o workaround do arredondamento da borda.

No projeto que estou usando a única diferença é a versão do buildToolsVersion, estou usando a versão 22.0.1. Em testes que fiz utilizando o projeto do arquivo zip disponibilizado no post também acontece o problema.

Abraços
Responder
Vinícius Thiengo (0) (0)
16/06/2015
Fala Paulo Henrique, blz sim.
Vlw a ajuda. O problema com as bordas é no CardView ou na imagem que é carregada no ImageView? Abraço
Responder
Paulo Henrique Alves (1) (0)
16/06/2015
O problema é espaçamento que aparece no ImageView.

Imagem do projeto do .zip:
http://i58.tinypic.com/34yzi13.jpg

O meu projeto que estou usando para acompanhar a série fica um espaçamento maior, 3x maior.
Responder
Vinícius Thiengo (0) (0)
16/06/2015
Paulo Henrique, tente esse atributo no ImageView:

android:scaleType="centerCrop"

Com ele a imagem deve encaixar sem problema no place dela. Abraço
Responder
Paulo Henrique Alves (1) (0)
16/06/2015
Sucesso!! Funcionou.

Thanks!!
Responder
Giuliano Costa (1) (0)
30/05/2015
Olá Tiengo! Valeu pelo video. Esclareceu muita coisa pra mim.
Estou passando por um probleminha que talvez seja fácil de corrigir. Gostaria de um CardView estilo Google Play, aonde podem ter 2, 3 ou 1 grande CardView por linha...
Eu tentei mudar o width mas ele não está ficando lado a lado.

Obrigado.
Responder
Vinícius Thiengo (1) (0)
30/05/2015
Fala Giuliano, blz?
O que quer implementar não exige mudança no CardView e sim no RecyclerView, mais precisamente no LayoutManager sendo utilizado com ele. Veja esse vídeo (http://www.thiengo.com.br/animacao-onlongpress-e-gridlayoutmanager-em-recyclerview-material-design-android-parte-3 ), nele falo de dois layouts manager (StaggeredGridLayoutManager e GridLayoutManager) que podem ser a solução de seu problema. Abraço
Responder
Giuliano (1) (0)
31/05/2015
Boa tarde Tiengo! Valeu pela resposta!

Ontem na tentativa e erro eu tinha visto isso logo depois que tu mandou a resposta.

Agora estou passando por outro problema que a lentidão da aplicação. hehehehehe

Muito obrigado!
Responder
Gabriel Vitor (1) (0)
28/05/2015
Olá Thiengo, blz?
Cara, eu estou seguindo o seu projeto e as videos aulas na risca mas quase não sai do jeito que fica no final do video... vc faz alguma coisa de diferente no "make in off"? estou desesperado pois meu TCC ta chegando e preciso apresentar logo mas nao consigo deixar os meu projetos com a mesma aparência dos seus...
Responder
Vinícius Thiengo (1) (0)
29/05/2015
Fala Gabriel, blz sim.
Faço nada, quando faço algo já aviso no vídeo mesmo que o script XYZ foi alterado antes do vídeo. Faça o seguinte, baixe o projeto que sempre está disponível para download e verifica se está pelo menos com a mesma lógica que o seu. Abraço
Responder
Ismael (0) (0)
14/05/2015
Então encontrei uma solução assistindo seu vídeo novamente. Não sei se é a mais correta, coloquei os valores abaixo em 14dp sendo que no seu projeto estão em 8dp.
android:layout_marginLeft="14dp"
    android:layout_marginRight="14dp"
Responder
Vinícius Thiengo (1) (0)
14/05/2015
Se rodou da maneira como vc queria e a APP não deu nenhum Exception, então é válida, mas mesmo assim acredito que a solução de ter mais Cards por linha é a melhor escolha. Abraço
Responder
Ismael (1) (0)
13/05/2015
Fala Thiengo, blz.

Olha só estou seguindo sua série de material design, esta me ajudando bastante. Estou seguindo seu projeto(https://github.com/engividal/MaterialDesign ) a partir das video aulas quando compilei no note 4 e minha imagem não preencheu completamente dentro card ja rodei o seu projeto e obtive o mesmo erro. Pode dar alguma dica de como resolver?  Desde já agradeço.
Responder
Vinícius Thiengo (1) (0)
14/05/2015
Fala Ismael. blz sim.
Na verdade o problema é o tamanho da imagem que deixei no projeto, no caso ou vc utilizaria uma imagem maior ou ao invés de apresentar um único cardView na vertical, colocaria mais de um (essa é a melhor opção). Uns três seria bom. Ou seja, teria de ter um layout diferente para quando fosse tablet. Abraço
Responder
Douglas Scriptore (1) (0)
05/05/2015
Fala Thiengo fmz? Cara uma duvida, estou realizando consultas no SqlLite do aparelho usando LIMIT e OFFSET, disparo a consulta quando o if(mList.size() == llm.findLastCompletelyVisibleItemPosition() + 1) é TRUE, até ai tudo bem, só que quando em dou scroll para o topo da lista, o comando effect é chamado novamente, como faço para o effect aparecer só com novos itens?
Responder
Vinícius Thiengo (1) (0)
06/05/2015
Fala Douglas, blz?
Coloque uma flag na classe dos objetos que estão sendo utilizados na lista que preenche o RecyclerView. Por exemplo, no vídeo acima utilizo a classe Car, logo nela adicionaria o atributo alreadyAnimated com o valor inicial em false, assim que tivesse no adapter o script verificaria para cada item se o atributo alreadyAnimated é false, se sim o script chamaria a animação para esse item, logo após a animação o script mudaria esse atributo para true, logo na próxima vez que esse item passasse pelo script de animação ele não seria animado, pois o condicional seria false devido ao valor do atributo, sendo assim somente os novos itens. Era isso? Abraço
Responder
Douglas (1) (0)
06/05/2015
Isso mesmo, vlw o/
Responder
Douglas Scriptore (1) (0)
07/05/2015
Fala Vinicius, blz?
        Cara estou com mais uma duvida aqui, agora respeito a animação, coloquei a função de animação no metodo onBindViewHolder, ela funciona para quando ja estou dentro do fragment, porem quando meu fragment é chamado pela primeira vez aparece animação Default do RecyclerView, oque poderia estar fazendo para padronizar essas animações?

Vlw.
Responder
Vinícius Thiengo (0) (0)
08/05/2015
Fala Douglas, blz sim
Verifique com o LogCat se realmente na primeira vez que entra no fragment se é a animação correta que está chamando, ou se até mesmo está chamando ela (em caso de estar dentro de um condicional e o condicional ser false na primeira vez no fragment). Se possível coloque um try...catch e veja se não está sendo printado nenhum error na primeira entrada ao fragment. Eu utilizo tb animação e não há padrão a ser utilizado, apenas chamar o método com a animação escolhido, porém já tive problemas de a animação hora funcionar e hora não, por isso solicitei que fizesse o teste como try...catch. Abraço
Responder
Ruan Alves (1) (0)
28/04/2015
E essa semana vai ter video?
Responder
Vinícius Thiengo (0) (0)
29/04/2015
Sim, soltei hj devido a problemas técnicos ontem. Abraço
Responder
Ruan Alves (1) (0)
29/04/2015
Thiego quando vc vai lançar a video aula, que explica tipo o campo pesquisa, por exemplo aquela do action bar de pesquisa, vc vai fazer quando neste?
Responder
Vinícius Thiengo (0) (0)
29/04/2015
Fala Ruan, na verdade vou fazer, porém não sei lhe dizer exatamente quando. Provavelmente o próximo será sobre o Floating Action Button. Abraço
Responder
Miguel Lemos (2) (0)
07/05/2015
No aguardo da action bar com pesquisa também, abraços
Responder
dario.mahalambe (1) (0)
28/04/2015
Oi thiengo queria saber se é possível eu dar acção a um item  do cardview. Estou fazendo uma aplicação de divulgação de   eventos, onde tenho os cardviews com a foto dos cartazes e que quando clicasse em um item passasse para outra activity com os detalhes do evento .
Responder
Vinícius Thiengo (1) (0)
29/04/2015
Fala Dario, blz?
É possível sim, na verdade com CardView ou Tile não muda nada, se ver os dois vídeos que fiz sobre o RecyclerView vc vai pegar como colocar o ClickListener para funcionar. Não coloquei para chamar outra Activity, mas ai é só acrescentar o startActivity() que vai sem problemas. Segue links dos vídeos se ainda não os viu. Abraço

RecyclerView, Material Design Android - Parte 2 (http://www.thiengo.com.br/recyclerview-material-design-android-parte-2 )

Animação, onLongPress e GridLayoutManager em RecyclerView, Material Design Android - Parte 3 (http://www.thiengo.com.br/animacao-onlongpress-e-gridlayoutmanager-em-recyclerview-material-design-android-parte-3 )
Responder
dario.mahalambe (1) (0)
29/04/2015
Muito obrigado thiengo. já consigui dar acção aos items no cardview usei a mesma implementação do vidro RecycleView ...
Responder
claudiotimbo123 (1) (0)
26/04/2015
opa thiengo beleza ? como eu faço para adicionar essas Libs baixadas no eclipse. Por exemplo no Android Studio você adiciona aquele link no gradle ne ? então queria saber como e que eu faço isso no eclipse .

aguardo Resposta.
Responder
Vinícius Thiengo (1) (0)
27/04/2015
Fala Claudio, blz sim.
Bom, se não me engano se encontram no projeto lib "android-support-v7-appcompat", verifique se a sua está atualizada (pelo Android SDK Manager), caso não atualize e então tente instanciar as entidades Toolbar, RecyclerView e CardVIew. Porém não esqueça de antes adicionar esse projeto lib ao seu projeto. Recomendo que migre para p AndroidStudio o quanto antes, pois as coisas no eclipse já estão começando a ficar cada vez mais difíceis. Abraço
Responder
Gustavo (2) (0)
20/04/2015
Oi thiengo, tudo na paz? Muito boa sua aula cara, agora tratando-se de listView eu tenho uma duvida, vc poderia me ajudar? É assim o, eu to fazendo uma aplicação que nela eu tenho uma lista de casas nessa lista eu tenho um imageView(foto da casa) e o nome da cidade, quando o usuario clica em um intem ele vai para outra activity onde eu exibo mais detalhado os dados da casa eu estou carregando essa lista de um bd remoto eu carrego em 10 em 10 sempre exibindo um botão de carregar mais. A minha duvida é quando o usuario rola essa lista e por exemplo carrega 30 itens e ele clica no item quando ele volta pra lista ela carrega apenas as dez ultimas casas q é o que o meu banco esta trazendo. Eu queria saber se tem como eu salvar esses dados ja carregados no onPause e quando o usuario voltar pra lista ele recarregar todos os itens novamente, não entendo muito de ciclo de vida não sei se quando o camarada passa para outra activity a outra é destruída ou apenas pausada, vc com sua grande experiencia poderia me dizer se tem a possibilidade de eu fazer isso? Obrigado msm pela ajuda cara abraços.
Responder
Vinícius Thiengo (4) (0)
20/04/2015
Fala Gustavo, td na paz sim.
Há várias maneiras de salvar esses dados e evitar o load novamente de seu bd remoto, em seu caso vc precisa somente de uma das maneiras disponíveis tendo em vista que vc quer manter os dados somente enquanto a APP está aberta.

Utilize o onSaveInstanceState (vídeo 1: http://www.thiengo.com.br/otimizando-sua-app-android-com-onsaveinstancestate ) (vídeo 2: http://www.thiengo.com.br/onsaveinstancestate-bitmap-e-serializable-no-android-correcao ), porém antes implemente a interface Parcelable (http://www.thiengo.com.br/parcelable-no-android-entendendo-e-utilizando ) na classe que vc preenche cada item do ListView, provavelmente é a classe Casa. Dessa forma vc vai manter os dados em sua Activity sem a necessidade de utilizar um SQLite (que por sinal recomendo para deixar sua APP trabalhando offline tb) e de realizar o carregamento de itens já carregados anteriormente. É importante que entenda o ciclo de vida da Activity e do Fragment, pelo menos esses.

No vídeo do savedInstanceState utilizei o Serializable para converter os dados em bytes, porém o Parcelable é mais eficiente, utilize ele (como no link do outro vídeo). Ve se assim vai. Abraço
Responder
Gustavo (1) (0)
21/04/2015
Boa Thiengo, é exatamente disso q eu precisava, só tem um probleminha, na sua implementação vc cria uma classe separada para tratar as imagens correto? vc recebe a imagem do bd remoto converte essa imagem para bitmap  e trata ela em uma classe antes de enviar para lista, no meu caso eu estou recebendo as imagens via Broadcast e estou enviado ela(a URL) para uma classe  onde eu trato ela no Universal image loader e de la msm eu ja coloco essa imagem no imageView do meu adapter, então eu queria saber de vc, se eu teria q transformar essas imagens q eu recebo no broadcast em bitmap pra fazer esse tratamento q vc fez? ou teria outra forma de eu fazer? não consegui achar uma solução pra isso :/ . Obrigado mais uma vez pela ajuda cara sua dica funcionou perfeitamente só isso ai q ta pegando. Abraços.
Responder
Vinícius Thiengo (1) (0)
22/04/2015
Fala Gustavo.
Então, nesses vídeos ainda não coloquei para baixar as imagens de um servidor Web, elas estão locais, porém o que vc está fazendo está ok, somente não entendi pq vc está utilizando um Broadcast. Não o utilize para baixar imagens, pois o tempo de execução dele é limitado e vc não pode assumir a conexão do emulador e a conexão WiFi como sendo padrões, pois mt provavelmente quando for para a 3G vai falhar.

Sobre o Bitmap, é isso mesmo, vc terá de ter o Bitmap para utilizar esse script, porém é bem tranquilo criar um Bitmap a partir de um Ressource, ImageView, Url, ... não código grande para isso. Outra forma é utilizar o Picasso lib (http://square.github.io/picasso/ ) com a lib RoundedImageView (https://github.com/vinc3m1/RoundedImageView ), porém se não me engano vc não terá o mesmo poder de fogo do script do vídeo, pois ali vc escolhe quais corners quer arredondar. Abraço
Responder
Gustavo (1) (0)
22/04/2015
Muito obrigado mesmo cara, consegui resolver o problema das imagens, agora ta funcionando perfeitamente :D Sobre o uso do Broadcast eu o utilizo pq pra o que eu queria fazer ele foi a melhor opção que eu achei msm sabendo que seu tempo de execução é limitado(se não me engano 10 segundos) e justamente pensando nisso eu fiz uma implementação que em 1 em 1 segundo em um loop eterno eu chamo ele atualizando a minha lista com os dados assim se o camarada estiver usando uma 3G a aplicação não vai falhar(espero srsrs) Mas é isso cara problema resolvido com sucesso tenho aprendido bastante com seu blog vc é mestre no assunto e eu torço pra que seu blog ainda seja um dos mais visitados blogs d tecnologia pois merece, obrigado mais uma vez to sempre por aqui estalkeando rs Abraços fica na paz.
Responder