gpt4 book ai didi

java - 过滤器不工作

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:03 25 4
gpt4 key购买 nike

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();
}
};
}

这是我的数据对象:

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);
}

}数据对象用于将单个 parking 场的项目相互连接

我创建了这个过滤器,我这样调用它:adapter.getFilter.filter(newText)但不知何故我的适配器RecyclerView没有改变,任何人都可以帮我解决这个问题吗?

最佳答案

您需要对代码进行一些修改。您将新的过滤数据插入到不同的 arrylist 中,因此在调用 notificationdatasetchanged() 后,它不会过滤您的数据。

首先将旧列表数据声明到另一个列表变量中,然后进行如下更改

 public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
AllData = ArrayData;
if (charText.length() == 0) {
ArrayData = AllData;
} else {
ArrayData.clear();
for (String s : AllData) {
if (s.toLowerCase(Locale.getDefault()).contains(charText)) {
ArrayData.add(s);
}
}
}
notifyDataSetChanged();
}

然后在您的搜索中调用此过滤器方法。

希望这有帮助..

@拉杰什

关于java - 过滤器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43472048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com