Как закрыть держатель представления recycler после нажатия на элемент?

#java #android #android-recyclerview #inputmethodmanager

#java #Android #android-recyclerview #inputmethod manager

Вопрос:

Я пытаюсь закрыть держатель представления (список элементов, который отображается после поиска в редактируемом тексте). Но я не могу найти правильную функцию или способ сделать это! Любая помощь?

У меня есть адаптер поиска, который я попытался переопределить onBindViewHolder и попытаться закрыть там представление recycler. Но я изо всех сил пытаюсь найти правильную функцию или способ..

 @Override
    public void onBindViewHolder(final SearchViewHolder holder, int position) {

        holder.full_name.setText(fullNameList.get(position));
        holder.full_name.setBackgroundColor(selectedPos == position ? Color.GREEN : Color.LTGRAY);

        holder.full_name.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(final View v) {


                if (holder.getAdapterPosition() == RecyclerView.NO_POSITION) return;
                notifyItemChanged(selectedPos);
                selectedPos = holder.getLayoutPosition();
                notifyItemChanged(selectedPos);
                Toast.makeText(context, ((TextView) v).getText(), Toast.LENGTH_SHORT).show(); //Here I get the text string


                // close keyboard on click

                v.clearFocus();
                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null) {
                        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
                }



            }
        });
    }
  

Комментарии:

1. что вы подразумеваете под закрытием?

2. Когда я ввожу текст, происходит автозаполнение, которое показывает мне некоторые результаты в соответствии с моим поиском, я хочу, чтобы отображаемые слова были закрыты после того, как я выберу один из элементов.

Ответ №1:

Ваш вопрос неясен. Возможно, вы можете очистить список полных имен и выполнить notifychange?

 @Override
    public void onClick(final View v) {
        if (holder.getAdapterPosition() == RecyclerView.NO_POSITION) return;
        notifyItemChanged(selectedPos);
        selectedPos = holder.getLayoutPosition();
        notifyItemChanged(selectedPos);
        Toast.makeText(context, ((TextView) v).getText(), Toast.LENGTH_SHORT).show(); //Here I get the text string

        //Clears the list and notify the adapter
        fullNameList.clear();
        notifyDataSetChanged();

        v.clearFocus();
        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
            imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }
    }
  

Хотя AutoCompleteTextView должен выполнять эту работу просто отлично.