Android AutoCompleteTextView中单击的下拉项在第一次单击时不响应

Android AutoCompleteTextView中单击的下拉项在第一次单击时不响应,android,autocompletetextview,onitemclicklistener,onitemclick,Android,Autocompletetextview,Onitemclicklistener,Onitemclick,我的应用程序实现了一个HashMap,这样,当在AutoCompleteTextVieweditText中键入键时,用户单击下拉列表项,值就会显示在textView上 唯一的问题是,单击的下拉项在第一次单击时没有响应(这只发生一次,在应用程序启动后,但随后工作正常),用户必须重新键入键,并在显示值之前单击该项 关于如何解决这个问题有什么建议吗 Java代码: public class MainActivity extends ActionBarActivity { Map<Str

我的应用程序实现了一个
HashMap
,这样,当在
AutoCompleteTextView
editText
中键入
键时,用户单击
下拉列表
项,值就会显示在
textView

唯一的问题是,单击的下拉项在第一次单击时没有响应(这只发生一次,在应用程序启动后,但随后工作正常),用户必须重新键入
,并在显示值之前单击该项

关于如何解决这个问题有什么建议吗

Java代码:

public class MainActivity extends ActionBarActivity 
{   

Map<String, String> map = new HashMap<String, String>();

private EditText autocomplete_searchField;
private TextView displayField;
String note;

@Override
protected  void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    autocomplete_searchField = (AutoCompleteTextView) findViewById(R.id.autocomplete_searchField);

    // Gets a reference to the AutoCompleteTextView in the layout
    final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_searchField);

    // Gets the string array
    String[] musicNote = getResources().getStringArray(R.array.music_notes_array);

    // Creates the adapter and set it to the AutoCompleteTextView 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, musicNote);
    textView.setAdapter(adapter);


    displayField = (TextView) findViewById(R.id.displayField);  
    textView.setOnItemClickListener(new AdapterView.OnItemClickListener() {


            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id){
            displayField.setText(map.get(adapterView.getItemAtPosition(position).toString()));

        String note = autocomplete_searchField.getText().toString();
            displayField.setText(map.get(note));


        map.put("Doe", "a deer, a female deer");
        map.put("Ray", "a drop of golden sun");
}
公共类MainActivity扩展了ActionBarActivity
{   
Map Map=newhashmap();
私有编辑文本自动完成搜索字段;
私有文本视图显示字段;
弦乐;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autocomplete\u searchField=(AutoCompleteTextView)findViewById(R.id.autocomplete\u searchField);
//获取对布局中AutoCompleteTextView的引用
最终自动完成文本视图文本视图=(自动完成文本视图)findViewById(R.id.autocomplete\u搜索字段);
//获取字符串数组
String[]musicNote=getResources().getStringArray(R.array.music\u notes\u array);
//创建适配器并将其设置为AutoCompleteTextView
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,musicNote);
setAdapter(适配器);
displayField=(TextView)findViewById(R.id.displayField);
textView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
displayField.setText(map.get(adapterView.getItemAtPosition(position.toString());
String note=autocomplete\u searchField.getText().toString();
displayField.setText(map.get(note));
地图。放置(“母鹿”,“鹿,母鹿”);
放在地图上(“光线”,“一滴金色的太阳”);
}

我见过的大多数相关解决方案都处理按钮,但不处理AutoCompleteTextView下拉项。我也尝试在JAVA和XML中设置焦点,但这些都没有解决问题。

我不太了解您要做的事情,但查看您的代码,我发现其中有一些错误。也许是问题所在。Moreover我在代码中添加了一些行,下面是:

public class MainActivity extends ActionBarActivity {  

    private Map<String, String> map = new HashMap<String, String>();
    private AutoCompleteTextView autocomplete_searchField;
    private TextView displayField;

    @Override
    protected  void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        autocomplete_searchField = (AutoCompleteTextView) findViewById(R.id.autocomplete_searchField);
        displayField = (TextView) findViewById(R.id.displayField);

        // Gets the string array
        String[] musicNote = getResources().getStringArray(R.array.music_notes_array);

        // Creates the adapter and set it to the AutoCompleteTextView 
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, musicNote);
        autocomplete_searchField.setAdapter(adapter);

        autocomplete_searchField.setThreshold(1);

        autocomplete_searchField.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

                autocomplete_searchField.showDropDown();

            }

        });

        autocomplete_searchField.setOnItemClickListener(new AdapterView.OnItemClickListener() {


            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id){

                displayField.setText(map.get(adapterView.getItemAtPosition(position).toString()));

            }

        }

    }

}
公共类MainActivity扩展了ActionBarActivity{
私有映射映射=新的HashMap();
私有自动完成文本视图自动完成搜索字段;
私有文本视图显示字段;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
autocomplete\u searchField=(AutoCompleteTextView)findViewById(R.id.autocomplete\u searchField);
displayField=(TextView)findViewById(R.id.displayField);
//获取字符串数组
String[]musicNote=getResources().getStringArray(R.array.music\u notes\u array);
//创建适配器并将其设置为AutoCompleteTextView
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,musicNote);
自动完成_searchField.setAdapter(适配器);
自动完成搜索字段。设置阈值(1);
自动完成\u searchField.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
自动完成_searchField.showDropDown();
}
});
autocomplete_searchField.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
displayField.setText(map.get(adapterView.getItemAtPosition(position.toString());
}
}
}
}

在做任何更改之前测试它,以了解问题是否已解决。然后你可以做任何你想做的;)

我尝试过你的方法,但运气不错。不确定你是否理解我试图实现的目标。我的案例与以下链接类似,只是它们的是按钮,而我的是下拉项:我尝试过这些方法,但仍然不走运。正如我在回答中所说,你在代码中犯了一些错误,例如,有两个<代码>自动完成文本视图
到您的代码中,您只使用了一个。也许这就是问题所在。请注意我回答的代码,我删除了其中一个,并做了更多的操作。如果它不起作用,请发布您的整个代码,以便我的经理能够帮助您。