Почему элемент не отображается при наборе текста в поле поиска? - PullRequest
0 голосов
/ 09 июля 2019

Элементы отображаются, пока я ничего не наберу в SearchView, затем элементы исчезнут.

Кажется, что размер fullOffers становится равным нулю, когда я что-то печатаю; потому что когда я помещаю тост сообщение, и оно не появляется, когда я помещаю его в цикл for.

Я добавил метод getFilter к адаптеру RecyclerView и связал его с SearchView в fragemnt.

public class OffersAdapter extends RecyclerView.Adapter<OffersAdapter.ViewHolder> implements Filterable{

    Context context;
    List<offer> offers;
    List<offer> fullOffers;
    public OffersAdapter(List Offers,Context mContext){
        context = mContext;
        offers = Offers;
        fullOffers = new ArrayList<>(Offers);
    }


    public Filter getFilter() {
        return exampleFilter;
    }

    private Filter exampleFilter = new Filter() {
        @Override
        protected FilterResults performFiltering(CharSequence constraint) {
            ArrayList<offer> filteredList = new ArrayList<>();

            if (constraint == null || constraint.length() == 0) {
                filteredList.addAll(offers);
            } else {
                String filterPattern = constraint.toString().toLowerCase().trim();

                    Toast.makeText(context,"item added",Toast.LENGTH_LONG).show(); // the toast message appears

                for (offer item : fullOffers) {
                    Toast.makeText(context,"item added",Toast.LENGTH_LONG).show(); // it doesn't appear

                    if (item.getTitle().toLowerCase().contains(filterPattern)) {
                        filteredList.add(item);
                    }
                }
            }

            FilterResults results = new FilterResults();
            results.values = filteredList;


            return results;
        }

        @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {
            offers.clear();
            offers.addAll((List) results.values);
            notifyDataSetChanged();
        }
    };

}

Я ожидаю, что элементы будут загружены в список "предложений" и появятся

1 Ответ

0 голосов
/ 10 июля 2019

попробуйте изменить метод publishResults следующим образом:

 @Override
        protected void publishResults(CharSequence constraint, FilterResults results) {

            offers=(List) results.values;
            notifyDataSetChanged();
        }
...