【问题标题】:Clicked drop-down item in AutoCompleteTextView does not respond on the first clickAutoCompleteTextView 中单击的下拉项在第一次单击时没有响应
【发布时间】:2015-06-10 17:59:16
【问题描述】:

我的应用实现了一个HashMap,这样当在AutoCompleteTextVieweditText 中输入key,并且用户单击dropdown 项目时,该值将显示在textView 上。

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

关于如何解决这个问题的任何建议?

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");
}

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

【问题讨论】:

    标签: android autocompletetextview onitemclicklistener onitemclick


    【解决方案1】:

    我不太了解您要做什么,但是查看您的代码,我发现其中有几个错误的地方。也许这就是问题所在。此外,我在您的代码中添加了一些行,所以这里是:

    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()));
    
                }
    
            }
    
        }
    
    }
    

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

    【讨论】:

    • 我已经尝试过您的方法,但很幸运。不确定你是否理解我想要达到的目标。我的情况类似于以下链接,除了它们是按钮,我的是下拉项:stackoverflow.com/questions/20755322/…stackoverflow.com/questions/5919849/…stackoverflow.com/questions/28502091/…我已经尝试了这些方法,但仍然没有运气。
    • 正如我在回答中所说,您在代码中犯了一些错误,例如,您的代码中有两个AutoCompleteTextView ,而您只使用了一个。也许这就是问题所在。注意我已经回答的代码,看到我删除了其中一个并做了更多的事情。如果它不起作用,请发布您的整个代码,以便我将经理帮助您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多