android - otro - autocompletetextview setonitemselectedlistener no funciona
listview onitemclicklistener android (3)
Ahí estoy tratando de escribir código para la actividad de autorización. Cuando coloco alguna entrada en inputEmail, espero que mi inputPasword se presente automáticamente si existe el registro correspondiente. Sin embargo, onItemSelectedListener parece no funcionar. Cuando selecciono el artículo no pasa nada. El registro no se pega a. Me gustaría saber si cometí algún error o si me estoy yendo mal.
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
}
});
Este es un duplicado de esta question
Sin embargo, debe usar AdapterView.OnItemClickListener() no OnItemSelectedListener.
Lo probé con éxito usando el siguiente fragmento de código. Vogella a Vogella por las cosas del adaptador.
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();
}
});
Use setOnItemClickListener y no use setOnItemSelectedListener. También use su objeto adaptador personalizado para obtener los valores seleccionados.
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());
}
});
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();
}
});
Solo obtenga el adaptador de AutoCompleteTextView y use la posición.