Reputation: 1075
I have an AutoCompleteTextView and set onItemSelectedListener to it, which does not work.
Have you any idea what is the problem? Here is my Activity, I can also provide the main.xml file if it is needed.
package com.chidem;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class ChidemActivity extends Activity implements OnItemSelectedListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String hop[]=new String[]{
"Karen","Mika","Gevor"
};
AutoCompleteTextView searchHotels = (AutoCompleteTextView) findViewById(R.id.autoSearch);
searchHotels.setOnItemSelectedListener(this);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>( this, R.layout.list_item, hop);
searchHotels.setAdapter(adapter1);
}
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Log.d("autocomplete", "itemselected");
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
Upvotes: 62
Views: 26766
Reputation: 3687
For JAVA
myAutoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.e(tag, "Clicked!");
myAutoCompleteTextView.clearFocus();
}
});
Upvotes: 0
Reputation: 4570
Looks like, of-late, the real problem may not be in the code of the question asked, but in the source code of the AutoCompleteTextView
class itself.
Although the AutoCompleteTextView
class sets it's OnItemSelectedListener
through the setOnItemSelectedListener
method, but nowhere in the class any listener method is called. Hence the listener remains unused. (reason best known to developers!)
Source code here: https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/widget/AutoCompleteTextView.java
As such, the alternative is to use the OnItemClickListener
.
Upvotes: 8
Reputation: 201
You must use
OnItemClickListener
instead of OnItemSelectedListener
Upvotes: 18
Reputation: 8101
Dude, you will laugh at your mistake. Its working for me. You have added OnItemSelectedListener
and not OnItemClickListener
.
Your method will only work if you select your items or browse through the view using a trackball or up/down arrows. Use one more value in your String starting with "k" say Karen1. Type "k" and select between Karen and Karen1.You will see that it works. If you want click, then add OnItemClickListener
and override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3)
Upvotes: 125