Выпадающий список не отображается в AutoCompleteTextView

Я работаю над проектом, в котором мне нужно получить доступ к данным из базы данных SQLite3 и показывать пользователю предложения при наборе текста. Я пробовал это с 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>

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


person Karthik Sivam    schedule 09.12.2013    source источник
comment
вот ссылка на другой ответ: раскрывающийся список автоматического завершения текста не отображается   -  person vikas kumar    schedule 23.01.2017


Ответы (2)


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

Вы установили адаптер только в 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) {

        }
    });
person Hariharan    schedule 09.12.2013
comment
@KarthikSivam проверьте мое редактирование .. не проверял его .. но это может оказать существенное влияние .. - person Hariharan; 09.12.2013
comment
Ваш ответ сам по себе работает. Спасибо и извините, я забыл установить порог. - person Karthik Sivam; 09.12.2013
comment
@KarthikSivam рад, что это помогло .. думал, что вы, возможно, установили threshold в oncreate(). Во всяком случае, я также отредактировал свой ответ для будущего использования. - person Hariharan; 09.12.2013

попробуй это

myAutoComplete.showDropDown()
person Yang Peiyong    schedule 14.03.2016
comment
Это решило это. Потратил на это часы. Спасибо друг ! - person BANDHAN MUNJAL; 10.12.2020