AutoCompleteTextView не показывает раскрывающийся список, когда я нажимаю пробел после ввода полного слова

Мой основной код деятельности:

// here you put all your data.
String[] dataArray = { "Amit sharma Kumar", "Hisham Kumar Munner",
        "Vineet John Chaturvedi", "Lucky Kumar Verma" };

ArrayList alAutoCompleteList;
AutoCompleteTextView acTV;
ArrayAdapter adapter1;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // etAuto = (EditText) findViewById(R.id.etAuto);
    acTV = (AutoCompleteTextView) findViewById(R.id.acTV);
    // Arraylist
    alAutoCompleteList = new ArrayList();
    adapter1 = new ArrayAdapter(MainActivity.this,
            android.R.layout.simple_dropdown_item_1line,     alAutoCompleteList);


    acTV.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub
            if (acTV.enoughToFilter()) {
                acTV.showDropDown();
                acTV.bringToFront();
            }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub
            alAutoCompleteList.clear();
        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

            String acText = acTV.getText().toString().trim();

            for (String item : dataArray) {

                if     (item.toLowerCase().contains(acText.toLowerCase())) {
                    alAutoCompleteList.add(item);
                }
            }


            acTV.setThreshold(4);
            acTV.setAdapter(adapter1);
            acTV.showDropDown();

        }
    });

Когда я ищуШарма» и нажмите пробел после этого предложения уйдут. Я хочу, чтобы эти предложения остались там. Я пытался сделать все, но не сделалне получил никакого успеха. Может кто-нибудь, пожалуйста, помогите?

Изменить: Может кто-нибудь, пожалуйста, попробуйте этот код на своих эмуляторах? Просто добавьтеAutoCompleteTextView в XML и запустить его.

Ответы на вопрос(4)

что есть проблема в наблюдателе текста, потому что автозаполнение просмотра текста не нуждалось в наблюдателе текста, потому что это событие автоматического слушателя. Вы должны просто передать свой массив в адаптер вместо списка. alAutoCompleteList нет никаких значений в списке. Вы никогда не добавляли ценность в списке.

либо вы должны сделать так: alAutoCompleteList.add ("данные один "); alAutoCompleteList.add (»данные два ");

или передайте dataArray в адаптер. adapter1 = новый ArrayAdapter (MainActivity.this, android.R.layout.simple_dropdown_item_1line, dataArray);

Не нужно использовать просмотрщик текста.

Прежде всего, вы нене нужноTextWatcher сAutoCompleteTextView так какAutoCompleteTextView есть собственный метод просмотра текста, т.е.MyWatcher, Вам необходимо использовать:

setThreshold(3);
final String[] AndroidDesk= getResources().getStringArray(R.array.clothname_arrays);
ArrayAdapter<string> My_arr_adapter= new ArrayAdapter<string>(getApplicationContext(),
            android.R.layout.simple_dropdown_item_1line,AndroidDesk);      
   cloths.setThreshold(1);
   cloths.setAdapter(My_arr_adapter);
   cloths.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<!--?--> arg0, View arg1, int arg2,long arg3) {                               
   }
   });
</string></string>

становленного вами адаптера. Адаптер по умолчанию фильтрует записи, вызывая toString () для них. Естественно, если пользователь вводит пробел, значения больше не совпадают. Для реализации этого пользовательского поведения вы не должныдобавить текстовый наблюдатель, но создать собственный адаптер. Вы все еще можете расширить ArrayAdapter или SimpleAdapter. Вы реализуете свое пользовательское поведение фильтрации (в вашем случае вызов trim ()), перезаписывая getFilter () и publishResults ().Вот или жеВот Вы можете найти примеры того, как это сделать.

 Guilherme Santos01 авг. 2018 г., 11:18
Можно'я не верюмы потратили так много времени, стуча головой о стену, и никогда не понимали, что моему адаптеру пришлось использовать toString, чтобы выяснить, как фильтровать элементы, из-за этого ха-ха ничего не получится. Спасибо
Решение Вопроса

TextWatcher слушатель наAutoCompleteTextView? Если вы сделали это, чтобы отфильтровать данные самостоятельно, вы не должнысделать это (потому что виджет делает это по умолчанию, а ваш код неверен).

Когда я ищу "Шарма» и нажмите пробел после этого. предложения уходят. Я хочу, чтобы эти предложения остались там.

Это происходит из-за адаптера и по умолчаниюFilter реализация, которая идет с ним, элементы, которыеAutoCompleteTextView используется под капотом, чтобы предоставить значения, которые вы видите в раскрывающемся списке. Поведение по умолчанию дляArrayAdapter это тот, который вы видите, вы можете найти объяснение вэтот ответ, Решение состоит в том, чтобы реализовать свой собственный адаптер с фильтром, который будет искать весь адаптер »s строка данных для строки фильтра. Я'мы взяли кодArrayAdapter класс из SDK и сделал небольшую корректировку, чтобы фильтрация нет разрыв при вставке пробела после слова. Вы можете найти классВот так как код слишком велик для публикации. Просто скопируйте класс в свой проект и используйте его как обычно:ArrayAdapter

FilterWithSpaceAdapter<string> adapter1;
//... 
adapter1 = new FilterWithSpaceAdapter<string>(MainActivity.this,
            android.R.layout.simple_dropdown_item_1line, dataArray);
</string></string>
 cnbandicoot15 февр. 2017 г., 13:14
Это решение нет работа. Если вы пишете пустое место, отклоните выпадающие предложения.
 Luksprog15 февр. 2017 г., 13:28
@cnbandicoot Пожалуйста, задайте новый вопрос, предоставив более подробную информацию о том, что вы 'делаешь
 Orlov Const13 мая 2019 г., 16:45
Я столкнулся с той же проблемой и несколькими осложнениями. Осложнения были из выпадающего спискаЭто было показано, и я абсолютно ничего не наблюдал, когда в массиве строк содержались строки с точками, плюсы и другие специальные символы. Я применил ваше решение с использованием FilterWithSpaceAdapter.java и достиг необходимого поведения для моего autocompletetextview. Спасибо, отличная сделка! Я убил двух зайцев одним выстрелом :).

Ваш ответ на вопрос