в моем приложении у меня есть текст редактирования, а просмотрщик содержит много предложений. когда пользователь что-то пишет в редактировании, он получает отфильтрованные предложения в обзоре переработчика. он также может выбрать много вариантов из окна повторного просмотра (множественный выбор), но когда он выбирает один вариант и пытается что-то написать снова, он не может получить предложения в зависимости от нового написания. Как я могу фильтровать каждый раз, когда пользователь пишет пространство. вот код фрагмента:
searchable.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
String s = charSequence.toString();
String[]splitted = s.split("-");
if(splitted.length == 0){
mAdapter.getFilter().filter(charSequence);
}else{
// mAdapter.getFilter().filter(splitted[splitted.length-1]);
}
recyclerView.setVisibility(view.VISIBLE);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
, а вот код адаптера просмотра переработчика:
....
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
//String[]splitted = charString.split("-");
if (charString.isEmpty()){
suggestListFiltered = suggestList;
}else{
List<Item> filteredList = new ArrayList<>();
for (Item row : suggestList) {
if (row.getText().toLowerCase().contains(charString.toLowerCase())) {
filteredList.add(row);
}
}
/////// TODO :: should be update
suggestListFiltered = filteredList;
////////////////////////////////
}
FilterResults filterResults = new FilterResults();
filterResults.values = suggestListFiltered;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
suggestListFiltered = (ArrayList<Item>) filterResults.values;
notifyDataSetChanged();
}
};
}