#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 должен выполнять эту работу просто отлично.