j'essaie d'écrire du code pour l'activité d'autorisation. Quand je mets une entrée dans inputEmail, je m'attends à ce que mon inputPasword soit automatiquement archivé si l'enregistrement correspondant existe. Cependant, onItemSelectedListener ne semblait pas fonctionner. Quand je sélectionne l'article, rien ne se passe. Le journal ne se limite pas à. J'aimerais savoir si j'ai commis une erreur ou si je me trompe d'approche.
AutoCompleteTextView inputEmail;
inputEmail = (AutoCompleteTextView) findViewById(R.id.loginEmail);
inputEmail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Set<String> keys = prefs.getAll().keySet();
emails.clear();
if (keys.size() != 0) {
emails.addAll(keys);
} else
emails.add("");
inputEmail.setAdapter(adapter);
email = inputEmail.getText().toString();
}
});
inputEmail.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
email = inputEmail.getText().toString();
password = prefs.getString(email, "");
Log.d(email + " "+password, "email+password");
if (password.length() > 1) {
inputPassword.setText(password);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
Ceci est un duplicata de cette question
Cependant, vous devez utiliser AdapterView.OnItemClickListener () not OnItemSelectedListener.
Je l'ai testé avec succès en utilisant l'extrait de code suivant. Crédit à Vogella pour l'adaptateur.
AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.autocomplete_textview);
String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
"Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
"Linux", "OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux",
"OS/2", "Ubuntu", "Windows7", "Max OS X", "Linux", "OS/2",
"Android", "iPhone", "WindowsMobile" };
ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < values.length; ++i) {
list.add(values[i]);
}
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
Android.R.layout.simple_list_item_1, list);
actv.setAdapter(adapter);
actv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this,
adapter.getItem(position).toString(),
Toast.LENGTH_SHORT).show();
}
});
autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedItem=autoCompleteTextView.getAdapter().getItem(position).toString();
Toast.makeText(getApplicationContext(),selectedItem , Toast.LENGTH_SHORT).show();
}
});
Procurez-vous simplement l'adaptateur de AutoCompleteTextView et utilisez la position.
Utilisez setOnItemClickListener et n'utilisez pas setOnItemSelectedListener. Utilisez également votre objet adaptateur personnalisé pour récupérer les valeurs sélectionnées.
prodNameAutoCompTxt.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
//Don't use this method
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
System.out.println("Nothing selected");
}
});
prodNameAutoCompTxt.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//Use this method
Product prodObj=(Product) prodAutoAdapter.getItem(i);
new UomSynch().execute(prodObj.getProdID());
}
});