android - AutoCompleteTextView 中单击的下拉项在第一次单击时没有响应

标签 android autocompletetextview onitemclicklistener onitemclick

我的应用实现了一个 HashMap,这样当在 AutoCompleteTextView editText 中键入 key 时,并且用户单击下拉项,该值将显示在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");
}

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

最佳答案

我不太明白你想要做什么,但是查看你的代码,我发现其中有一些错误的事情。也许这就是问题所在。此外,我在您的代码中添加了一些行,所以这就是:

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

            }

        }

    }

}

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

关于android - AutoCompleteTextView 中单击的下拉项在第一次单击时没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30763879/

相关文章:

Android:滑动页面时未触发 OnItemClickListener 事件(FragmentActivity 和 ListFragment)

java - 将自定义数据添加到 ListView 和 ArrayAdapter 项目

android - 使用 Intent 从 Google Drive 获取文件

android - 带有联系人电话号码的 MultiAutoCompleteTextView

Android AutoCompleteTextView 在横向模式下显示对象信息而不是文本

android - 为什么 AutoCompleteTextView 的名字这么奇怪?

java - 抽屉导航 onClick 在项目中链式 react 丢失

java - Html.fromHtml() 在 ListView 回收问题中使用自定义 ImageGetter

android - 使用 Gradle 和 Android Studio 构建 stORM 时出现 dex 错误

android - 在 Android 1.5 平台 AVD 上找不到位图资源