2

Мое приложение реализует HashMap, таким образом, что, когда key набирается в AutoCompleteTextVieweditText, и пользователь нажимает dropdown элемент, значение получает отображается на textView.Нажал выпадающий пункт в AutoCompleteTextView не отвечает на первый щелчок

Единственная проблема заключается в том, что выпадающий элемент с щелчком не отвечает на первый клик (это происходит только один раз, после того, как приложение запустилось, но затем работает нормально), пользователь ДОЛЖЕН повторно ввести 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

Я пробовал ваш подход, но удачи в этом. Не уверен, что вы понимаете, чего я пытаюсь достичь. Мой случай похож на следующие ссылки, за исключением их кнопки, и выпадающий элемент my: 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-time- нажмите Я пробовал эти подходы, но не повезло. – Emzor

+0

Как я уже сказал в своем ответе, вы допустили некоторые ошибки в своем коде, например, в ваш код есть два 'AutoCompleteTextView', и вы используете только один. Возможно, в этом и проблема. Обратите внимание на код, на который я ответил, и вижу, что я удалил один из них и сделал что-то еще. Если он не работает, разместите весь свой код, чтобы я мог помочь вам. –

Смежные вопросы