As caixas de diálogo com listas de opções são uma ótima maneira de permitir que os usuários escolham entre várias alternativas em seu aplicativo Android. O AlertDialog é uma ferramenta versátil que pode ser usada para criar esse tipo de interação de forma simples e eficaz. Neste post, vamos aprender como exibir caixa de diálogo com lista de opções no Android usando o AlertDialog.Builder.
1. Criando a caixa de diálogo
Para exibir uma caixa de diálogo com uma lista de opções, você usará o AlertDialog.Builder e o método setItems(), que permite passar uma lista de itens que o usuário pode escolher.
Exemplo de Código:
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Chama o método para exibir a caixa de diálogo
mostrarDialogoComLista();
}
private void mostrarDialogoComLista() {
// Define os itens da lista
final String[] opcoes = {"Opção 1", "Opção 2", "Opção 3", "Opção 4"};
// Cria a caixa de diálogo
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Escolha uma opção")
.setItems(opcoes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// O que fazer quando o usuário clicar em uma opção
String opcaoSelecionada = opcoes[which];
// Aqui você pode tratar a opção selecionada
mostrarMensagem(opcaoSelecionada);
}
});
// Exibe a caixa de diálogo
builder.create().show();
}
private void mostrarMensagem(String mensagem) {
// Método para mostrar a opção selecionada
Toast.makeText(this, "Você selecionou: " + mensagem, Toast.LENGTH_SHORT).show();
}
}
2. Explicação do código
- Lista de opções: Definimos um array
opcoesque contém as opções que queremos que o usuário selecione. - AlertDialog.Builder: Criamos uma instância do
AlertDialog.Builder, definindo o título e as opções da lista usandosetItems(). - Listener de clique: Implementamos um
OnClickListenerpara capturar qual opção foi selecionada. O índicewhichrepresenta a posição da opção escolhida na lista. - Mostrar mensagem: Após a seleção, chamamos o método
mostrarMensagem()para exibir umToastcom a opção escolhida.
3. Personalizando a caixa de diálogo
Você pode personalizar ainda mais a caixa de diálogo com o método setNegativeButton() para adicionar um botão de cancelamento e o método setPositiveButton() se quiser um botão de confirmação.
Exemplo:
builder.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss(); // Fecha a caixa de diálogo
}
});
4. Usando setMultiChoiceItems para Seleção Múltipla
Se você deseja permitir que os usuários selecionem várias opções, pode usar setMultiChoiceItems().
Exemplo:
boolean[] selecoes = {false, false, false, false}; // Inicialmente, nenhuma opção selecionada
builder.setMultiChoiceItems(opcoes, selecoes, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// Lógica para lidar com a seleção/desmarcação
}
});
Outro exemplo prático
1. Crie um arquivo de layout (layout resource file) para exibir a caixa de diálogo com as opções.
Aqui o arquivo será nomeado para opcoes_lista.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="#FFFF0000"
android:padding="12sp"
/>
2. Em MainActivity crie um método para gerar a caixa de diálogo:
private void lista_opcoes() {
//Lista de itens
ArrayList itens = new ArrayList();
itens.add("Opção A");
itens.add("Opção B");
itens.add("Opção C");
itens.add("Opção D");
//adapter utilizando um layout customizado (opcoes_lista.xml>
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.opcoes_lista, itens);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Lembrete:");
//define o diálogo como uma lista, passa o adapter
builder.setSingleChoiceItems(adapter, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this, "opção escolhida: " + arg1, Toast.LENGTH_SHORT).show();
alerta.dismiss();
}
});
alerta = builder.create(); //cria o AlertDialog
alerta.show(); //Exibe
}
3. Crie um botão. Dentro do método onCreate, crie um evento onClick para o botão criado e chame o método lista_opcoes():
private Button meuBotao;
...
meuBotao = findViewById(R.id.btnBotao);
...
meuBotao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
lista_opcoes(); //chama método
}
});
Exibir uma caixa de diálogo com uma lista de opções é uma maneira eficaz de coletar a entrada do usuário em seu aplicativo Android.
Usando AlertDialog, você pode facilmente criar interfaces interativas e dinâmicas, permitindo que os usuários façam escolhas de maneira intuitiva. Experimente implementar essa funcionalidade em seu próprio aplicativo e personalize-a conforme suas necessidades!
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits





