0

Я работаю над проектом, в котором мне приходится обращаться к данным из базы данных SQLite3 и показывать предложения пользователю во время ввода. Я пробовал это с помощью AutoCompleteTextView, но он не работает. Я работаю над этим кодом:Выпадение не отображается в AutoCompleteTextView

ArrayList<String> sugestion = new ArrayList<String>(); 


public ViewGroup onCreateView (LayoutInflater inflater , ViewGroup container , Bundle savedInstanceState) 
{ 
myAutoComplete = (AutoCompleteTextView) group.findViewById(R.id.searchit); 

searchDB = new searchAdapter(getActivity()); 

searchDB.getWritableDatabase(); 

myAutoComplete.addTextChangedListener(new TextWatcher(){ 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

      suggestion = searchDB.getSuggestion(s.toString()); 

      Collections.sort(suggestion); 

      String[] item = new String[suggestion.size()]; 

      item = suggestion.toArray(item); 

      for(String word : item) 
       System.out.println(word); 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) {     

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

searchAdapter = new ArrayAdapter<String>(getActivity() , android.R.layout.simple_dropdown_item_1line, item); 

     myAutoComplete.setAdapter(searchAdapter); 

... 
} 

Я проверил как в ArrayList (из базы данных) и String[] массива, печатая его, они имеют строки расположены.

Мой макет XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id = "@+id/group" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 


<AutoCompleteTextView 
     android:id="@+id/searchit" 
     android:layout_marginTop="15dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="Choose The Country" > 

     <requestFocus /> 
    </AutoCompleteTextView> 

..... 
</RelativeLayout> 

Dropdown для струнного предложения не отображается при вводе. Я также пробовал использовать свой собственный макет, используя textview вместо android.R.layout.simple_dropdown_item_1line. Что мне здесь не хватает? Любая помощь будет оценена

+0

здесь ссылка на другой ответ: [автоматический просмотр полного текста выпадающий не показывается] (http://stackoverflow.com/a/41806707/4517450) –

ответ

1

Попробуйте это ...

Вы установили адаптер только в onCreate(). Но у вас есть значение для вашего массива item только внутри onTextChanged в TextWatcher. поэтому попробуйте установить adapter afetr, заполнив ваш массив item.

  myAutoComplete.addTextChangedListener(new TextWatcher(){ 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

      suggestion = searchDB.getSuggestion(s.toString()); 

      Collections.sort(suggestion); 

      String[] item = new String[suggestion.size()]; 

      item = suggestion.toArray(item); 

      for(String word : item) 
       System.out.println(word); 

     searchAdapter = new ArrayAdapter<String>(getActivity() , android.R.layout.simple_list_item_1, item); 

     myAutoComplete.setAdapter(searchAdapter); 
     myAutoComplete.setThreshold(1); 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) {     

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 
+0

Я пытался это сделать. Все такой же. –

+0

@ KarthikSivam проверить мое редактирование .. не проверили его .. но это может иметь какое-то значительное влияние .. – Hariharan

+0

Ваш ответ сам работает. Спасибо, и жаль, что я забыл установить порог. –

2

попробовать это

myAutoComplete.showDropDown() 
Смежные вопросы