这是我的模特:
public class AudioFile {
private int id;
private String fileName;
private String[] subStrings;
public AudioFile(int id, String fileName, String[] subStrings){
this.id = id;
this.fileName = fileName;
this.subStrings = subStrings;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String[] getSubStrings() {
return subStrings;
}
public void setSubStrings(String[] subStrings) {
this.subStrings = subStrings;
}
@Override
public String toString() {
return fileName;
}
}
我填充了我的列表视图,并使用我的自定义适配器。现在我想根据subStrings
数组过滤列表视图:
@SuppressLint("DefaultLocale")
@Override
protected FilterResults performFiltering(CharSequence constraint) {
constraint = constraint.toString().toLowerCase();
if (constraint != null) {
suggestions.clear();
for (AudioFile _data : itemsAll) {
if (_data.getSubStrings().contains(constraint)) {
suggestions.add(_data);
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = suggestions;
filterResults.count = suggestions.size();
return filterResults;
} else {
return new FilterResults();
}
}
正如您所看到的,我只是根据_data.getSubStrings().equals(constraint)
过滤结果但是它不起作用。
有什么想法吗?
答案 0 :(得分:0)
equals
不是正确的检查方式,因为数据类型不同。您应该使用Arrays.asList(_data.getSubStrings()).contains(constraint)
答案 1 :(得分:0)
请尝试这种方式,希望这有助于您解决问题。
for (AudioFile _data : itemsAll) {
String[] subStringsArray = _data.getSubStrings();
for(String subString : subStringsArray){
if(subString.equals(constraint)){
suggestions.add(_data);
break;
}
}
}