public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
FilteredData = ArrayData;
} else {
ArrayList<Data> filteredList = new ArrayList<>();
for (Data checkData: ArrayData) {
if (checkData.getNames().toLowerCase().contains(charString)) {
filteredList.add(checkData);
}
}
FilteredData = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = FilteredData;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
FilteredData = (ArrayList<Data>) filterResults.values;
notifyDataSetChanged();
}
};
}
Das ist mein Datenobjekt:Filter nicht funktioniert
public class Data {
public String names;
public String cPoints;
public Double latitude;
public Double longitude;
public String code;
public Float distance;
public Integer spots;
public int scale = 2;
public Data(String n, String cP, Double lat, Double lon, String c, Float dis, Integer sp){
names = n;
cPoints = cP;
latitude = lat;
longitude = lon;
code = c;
distance = dis;
spots = sp;
}
public String getNames(){
return names;
}
public String getcPoints(){
return cPoints;
}
public Double getLatitude(){
return latitude;
}
public Double getLongitude(){
return longitude;
}
public String getCode(){
return code;
}
public Integer getSpots(){
return spots;
}
public Double getDistance(){
return Math.round(distance * Math.pow(10, scale))/Math.pow(10, scale);
}
} Das Datenobjekt verwendet wird, Elemente eines einzelnen Parkgarage zueinander
ich diesen Filter erstellt haben zu verbinden, und ich nenne es so: adapter.getFilter.filter(newText)
aber irgendwie ändert sich mein Adapter RecyclerView nicht, könnte mir jemand helfen das zu beheben?
siehe [diese] (https://gist.github.com/pskink/cd3bbdd742b5b1905a790c76831b5d85) generische Adapter - beachten Sie 'matches()' Methode, die verwendet wird, zum Filtern – pskink