Meglio: come vedere se una parola si trova in una lista di tipo ArrayList.
Isoliamo il problema.
Creiamo un'ArrayList di stringhe con un elenco banale, i nomi dei sette nani.
ArrayList lista=new ArrayList();
lista.add("Gongolo");
lista.add("Mammolo");
lista.add("Pisolo");
lista.add("Cucciolo");
lista.add("Dotto");
lista.add("Eolo");
lista.add("Brontolo");
Ora ho cercato su Google le parole chiave "matches" e "ArrayList", e ho trovato alcuni costrutti, interessanti da ricordare, che metto in pratica subito. In particolare, il metodo contains di ArrayList è molto utile allo scopo.
public class MainActivity extends AppCompatActivity {
Button button;
ArrayList<String> lista;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button);
lista=new ArrayList<String>();
lista.add("Gongolo");
lista.add("Mammolo");
lista.add("Pisolo");
lista.add("Cucciolo");
lista.add("Dotto");
lista.add("Eolo");
lista.add("Brontolo");
button.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View view) {
if(lista.contains("Cuccolo")){
Toast.makeText(getApplicationContext(),"CONTIENE!",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),"NON CONTIENE!",Toast.LENGTH_LONG).show();
}
}
});
}
}
Cambiando "Cucciolo" in "Cuccolo", la risposta cambia: nel primo caso è "CONTIENE" mentre nel secondo è "NON CONTIENE".Un altro costrutto è questo:
public class MainActivity extends AppCompatActivity {
Button button;
ArrayList<String> lista;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button);
lista=new ArrayList<String>();
lista.add("Gongolo");
lista.add("Mammolo");
lista.add("Pisolo");
lista.add("Cucciolo");
lista.add("Dotto");
lista.add("Eolo");
lista.add("Brontolo");
button.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View view) {
for(String s : lista){
if(s.equals("Cucciolo"))
Toast.makeText(getApplicationContext(),"CONTIENE!",Toast.LENGTH_LONG).show();
else
Toast.makeText(getApplicationContext(),"NON CONTIENE!",Toast.LENGTH_LONG).show();
}
}
});
}
}
Con questo costrutto posso ottenere risultati ingannevoli: se predispongo, come in questo caso, una risposta anche in caso di esito negativo, ottengo il risultato dell'ultimo elemento della lista esaminato, quindi posso avere una segnalazione di "non presente" se solo l'ultimo elemento esaminato è diverso da quello che io sto cercando.Predisponendo solo la risposta in caso positivo, invece, ottengo una risposta pertinente.
Nessun commento:
Posta un commento