2

我的应用程序实现HashMap,这样,当keyAutoCompleteTextVieweditText被输入,并且用户点击一个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中设置焦点,但那些都没有解决问题。

回答

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

      } 

     } 

    } 

} 

测试它之前做才能实现,如果这个问题被固定的任何变化。然后你做任何你想做的事;)

+0

我试过你的方法,但运气好。不知道你明白我想达到什么。我的情况类似于以下链接,除了他们是按钮和我的下拉项目:http://stackoverflow.com/questions/20755322/button-listener-not-get-registered-on-first-click-in-android http ://stackoverflow.com/questions/5919849/android-button-needs-two-click-for-action http://stackoverflow.com/questions/28502091/android-button-only-working-at-second-time-点击我尝试了这些方法,但仍然没有运气。 – Emzor

+0

正如我在回答中所说的,你在代码中犯了一些错误,例如,在你的代码中有两个'AutoCompleteTextView',你只用一个。也许这就是问题所在。注意我已经回答的代码,并看到我删除了其中一个并做了更多。如果它不起作用,请发布您的整个代码,以便经理为您提供帮助。 –

相关问题