Olá, tenho alguns arquivos de música na pasta drawable de meu projeto. Como posso listá-las e adicionar em um ListView?
Cuidado. Se você tem arquivos de música, acredito que devam ser .mp3
(ou coisa do tipo). Neste caso, o melhor seria colocá-los na pasta res/raw
.
Respondendo sua pergunta, o Android não tem uma forma de listar o conteúdo da pasta res
. Mas, como ele oferece as classes estáticas R.drawable
(ou R.raw
), podemos buscar pelos seus campos usando reflection:
Field[] musicas = br.com.pacoteDaMnhaApp.R.raw.class.getFields();
for (Field musica : musicas) {
try {
System.out.println("R.raw." + musica.getName());
} catch (Exception e) {
e.printStackTrace();
}
}
Com isso, você tem os nomes das músicas para colocar no seu ListView
usando um ArrayAdapter
, por exemplo.
Muito obrigado. Mas e no caso de eu precisar reproduzir a música, como posso reproduzir o arquivo correto clicado pelo usuário? (É uma dúvida bem básica, pois já sei como reproduzir, só estou meio travado nessa parte). Também não estou conseguindo criar um ArrayAdapter para adicionar o nome na ListView, você poderia me dar um exemplo?
Abre outra dúvida, pra que outros possam ajudar também?
Você não poderia colocar aqui?
Eu acho incrível a aparente “má vontade” de algumas pessoas. Se não sabe responder, ou se não tem paciência, fica apenas de “expectador”, pois é bem mais bonito. Valtersouza147, meu amigo vou te ajudar. Sou diretor de desenvolvimento Android de uma empresa que desenvolve para Multimídia automotivo. Estava fazendo uma rotina dentro de nosso launcher para listar os logotipos de marca de automóveis para o usuário poder alterar de acordo com a marca de seu veículo. Acredito que o problema esteja no mesmo conceito. No meu caso eu criei um adapter, criei uma classe para capturar cliques no RecyclerView e mais uns “fru-fru”… para resolver seu problema creio que essas pouca linhas resolvam… lembrando que vc deve alterar para que seu App “entenda” a quem vc esta se referido (nomes de variáveis e componentes por exemplo). Bom chega de blablablá… eis o código:
- Adicione um ListView no se Activity
- No método onCreate()** , nós recuperamos o componente pelo ID para utiliza-lo mais tarde.
ListView listview = (ListView) findViewById(R.id.listview);
-
Vou utilizar uma Array de Strings com os nomes de marcas de carros como exemplo.
String[] dados = new String[] { “Fiat”, “VolksWagen”, “Ford”, “Chevrollet”, “Kia”,
“Honda”, “Toyota”, “BMW”,
“Audi”, “Ferrari”, “Lamborghini”, “Tiggo” }; -
Instanciar a classe ArrayAdapter tipando-a com dados do tipo String .
No construtor da classe passar os seguintes parâmetros de forma sequencial: Context, ID do layout e a Array de dados.
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, dados);
Estamos utilizando o layout android.R.layout.simple_list_item_1 padrão para a linha da ListView .
Agora adicione o Adapter dentro da ListView utilizando o método setAdapter()
listview.setAdapter(adapter);
Pronto, acredito que seu problema estará resolvido.
Eu acho incrível a aparente “boa vontade” de algumas pessoas. Por isso, vou te dar um toque: você está respondendo em um tópico de mais de 3 anos atrás. Possivelmente, nem o Felipe Torres, nem o o Valter estão mais aqui no Fórum, então dar uma resposta a eles (sendo desnecessariamente crítico com um dos participantes) não é muito produtivo.
No mais, seja bem vindo à comunidade. Espero que possa contribuir mais, preferencialmente em tópicos mais recentes.
Abraço.
kkkkk Verdade… apenas depois de responder eu vi que o tópico foi ha 4 anos atras, mas como sei que as pessoas consultam tópicos antigos, resolvi postar a resposta. Mas se eu tivesse visto na época com certeza ajudaria. Só não concordo com vc no “desnecessariamente critico” ,pois foi bem pertinente a minha “crítica”, afinal olha a resposta que o cara deu, claramente não sabe ou tava com preguiça, então que ficasse quietinho. No mais agradeço pelas “boas-vindas” , essa sim desnecessariamente crítica.
E pode ter certeza que contribuirei mais. Um bom final de domingo e uma boa semana pra todos.