Queria uma ajuda pra trabalhar com grande quantidade de icone

18 views
Skip to first unread message

Nelson Plínio Martins Lisboa

unread,
Feb 4, 2016, 1:18:15 PM2/4/16
to Android Brasil - Dev
Bom dia, tarde, noite,
Galera queria um auxilio pois estou trabalhando num projeto que envolve uma grande quantidade de ícones que e utilizado em vários lugares do app.
Queria saber se tem alguma forma de pegar eles de uma forma dinâmica, pois o servidor manda pro app o nome do ícone do ícone que deve ser utilizado em cada lugar ex:"ic_notificação" 
e com isso e enviável fazer um switch ou if else para verificar qual e o nome do ícone e dar o getResources().getDrawable(R.mipmap. ...)
Se alguém saber uma forma ou método que possa me ajudar a fazer isso e puder me auxiliar agradeço.

Muito obrigado pela atenção e tudo de bom a todos.
Abraço.

Jonas Alves

unread,
Feb 4, 2016, 2:06:11 PM2/4/16
to Android Brasil - Dev
O Resources#getIdentifier faz exatamente o que você descreveu.

Cheers,
Jonas

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Nelson Plínio Martins Lisboa

unread,
Feb 4, 2016, 2:18:57 PM2/4/16
to androidb...@googlegroups.com
Obrigado pela resposta,
Mais do jeito que estou fazendo vou ter que fazer um switch pra verificar o nome do icone ex
switch(nome){
     case "ic-notificacao":
            drawable = getResource().getDrawable(R.mipmap.ic_notificacao);
       break;
      case "ic-home":
             drawable = getResource().getDrawable(R.mipmap.ic_home);
      break;
}

Imagina pra 200 300 400 ícones que tenho vou ter que fazer um pra cada ? e inviável e perca de tempo eu acho,
queria saber se tem um jeito de tipo

drawable = getResource().getDrawable(R.mipmap."nome");

Pra eu fazer isso só uma vez pra não precisar fazer isso 200 vezes; 
Obrigado e abraço; 

--
You received this message because you are subscribed to a topic in the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/androidbrasil-dev/ZWRbA_AD1bw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to androidbrasil-...@googlegroups.com.

Nelson Plínio Martins Lisboa

unread,
Feb 4, 2016, 2:33:25 PM2/4/16
to androidb...@googlegroups.com
Obrigado Jonas não tinha observado o link vou dar uma olhada obrigado msm.

Em 4 de fevereiro de 2016 17:05, Jonas Alves <jon...@gmail.com> escreveu:

--
You received this message because you are subscribed to a topic in the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/androidbrasil-dev/ZWRbA_AD1bw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to androidbrasil-...@googlegroups.com.

Sergio Junior

unread,
Feb 4, 2016, 2:45:05 PM2/4/16
to androidb...@googlegroups.com
O que você poderia tentar fazer é algo com reflection.

Por exemplo -> 


private Integer getFieldValue (String fieldName){
     for (Field field : R.mipmap.class.getFields()){
          if (field.getName().contains(fieldName){
                return (int) field.get(R.mipmap.class);
           }
     }
    return null;
}

Dai você pegaria o integer correspondente daquele valor e usaria no seu getDrawable.

Não sei se é uma boa prática, reflection sempre é algo pra se ter cuidado.. :)
Atenciosamente,

Luis Sérgio

Mestrando em Engenharia de Teleinformática - Universidade Federal do Ceará (UFC)
Graduado em Engenharia de Computação - Instituto Federal de Educação, Ciência e Tecnologia do Ceará (IFCE)
Analista de Sistemas - Instituto Atlântico (IA)

Leonardo Benedeti

unread,
Feb 5, 2016, 8:19:30 AM2/5/16
to Android Brasil - Dev
Amigo,

A ideia que o pessoal deu ai é muito boa. Mas caso queira simplificar mais ainda, pense fora da programação.
Tive uma ideia que pode te render um trabalho inicial, mas no desenvolvimento vai ser bem simples.

Pelo que explicou, imagino que todos os icones já vão estar no app, ok.
O servidor vai te enviar um identificador, seja nome ou id ou qualquer coisa, do icone a ser usado, ok tbm.
Isso foi o que eu entendi em, estou baseando minha resposta nisso.

Ideia: salva o nome da resposta do server com o mesmo nome que está no app.
Ex.:
No app: ic_notification
Resposta do server(segura na cadeira em): ic_notification.

Simples não ?
Para funcionar mais simples basta fazer unico codigo de getResources([caminho dentro do app] + [resposta do server]) e vc pode concatenar onde está dentro do app, seja em mipmap ou drawable.

Pode ser uma ideia gambiarra, pode, mas é assim que se fazem as ideias que estão por ai hj. =D

Espero ter ajudado. =D
Abraço

Nelson Plínio Martins Lisboa

unread,
Feb 5, 2016, 8:38:11 AM2/5/16
to androidb...@googlegroups.com

Agradeço pela sua  resposta, vou fazer os teste mais estou trabalhando com os nomes iguais sim. Obrigado

--
Reply all
Reply to author
Forward
0 new messages