davideas / FlexibleAdapter

Fast and versatile Adapter for RecyclerView which regroups several features into one library to considerably improve the user experience :-)
Apache License 2.0
3.55k stars 548 forks source link

Probable major bug in private filterItemsAsync() method. #759

Open mecoFarid opened 4 years ago

mecoFarid commented 4 years ago

filterItemsAsync() always checks for a new filter. If filter parameters haven't been changed then filtering will be omitted here:

private synchronized void filterItemsAsync(@NonNull List<T> unfilteredItems) {
        // Omitted for brevity 
        if (hasFilter() && hasNewFilter(mFilterEntity)) { //skip when filter is unchanged

        }
    }

Steps to reproduce: Let's take a simple situation where each item has a status field called isSent.

1) Add a few items to the adapter where isSent = false 2) Apply filter where only items with isSent = false should be visible 3) Change status of any single item item to isSent = true and the call FlexibleAdapter.filterItems() 4) Since the filter itself hasn't changed, the filtering will, simply, be omitted