I am creating an application that will need to store the specialties of each clinic registered in the application, these specialties will later be stored in the Firebase database, I am using a Dialog with checkboxes where they will show the clinical specialties, I am also using an array of strings which has a reference to an array defined in the string.xml with the specialties, and an ArrayList that saves the results, which items in the list of specialties were selected, but I can not convert the selected items to a list with the name of the specialties that were selected .
In the setPositiveButton method, there is an example that I can pass the specialties only to a common string.
privateboolean[]especialidadesChecadas;privateString[]listaEspecialidades;privateArrayList<Integer>mEspecialidadeSelecionados=newArrayList<>();botaoEspecialidades.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){if(redeSelecionada!=null){AlertDialog.BuildermBuilder=newAlertDialog.Builder(CadastroActivity.this);mBuilder.setTitle("Seleciona as especialidades:")
.setMultiChoiceItems(listaEspecialidades, especialidadesChecadas, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int position, boolean isChecked) {
if(isChecked){
if(!mEspecialidadeSelecionados.contains(position)){
mEspecialidadeSelecionados.add(position);
}
} else if (mEspecialidadeSelecionados.contains(position)){
mEspecialidadeSelecionados.remove((Integer) position);
}
}
});
mBuilder.setCancelable(false);
mBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String item = "";
for(int i= 0; i < mEspecialidadeSelecionados.size(); i++){
item = item + listaEspecialidades[mEspecialidadeSelecionados.get(i)];
if(i != mEspecialidadeSelecionados.size() -1){
item = item + ", ";
}
}
//DESSA FORMA CONSIGO VER TODAS AS ESPECIALIDADES NUMA UNICA STRING, MAS PRECISAVA
//DE UM ARRAY DE STRING PARA ARMAZENAR DO FIREBASE DATABASE PARA PUXAR POSTERIORMENTE
Toast.makeText(CadastroActivity.this, ""+item, Toast.LENGTH_SHORT).show();
}
});
mBuilder.setNegativeButton("Fechar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
mBuilder.setNeutralButton("Limpar", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Limpar selecionados
//Passa por todos os itens e deseleciona
for(int i = 0; i < especialidadesChecadas.length; i++){
especialidadesChecadas[i] = false;
mEspecialidadeSelecionados.clear();
}
}
});
AlertDialog mDialog = mBuilder.create();
mDialog.show();