每个人的好日子,我用RecyclerView
和SearchView
以及来自网络服务的数据实施SearchView
,在 private ArrayList<itemObj> filter(ArrayList<itemObj> models, String query) {
final ArrayList<itemObj> filteredModelList = new ArrayList<>();
for (itemObj model : models) {
final String text = model.getTitle();
if (text.contains(query)) {
filteredModelList.add(model);
}
}
return filteredModelList;
}
当我清除部分文字或所有文字时没有任何更新列表,它是执行查询的速度非常慢,我遵循此answer。
注意:项目包含图片!
我的过滤器非常简单并不复杂:
$.ajax({
type: "POST",
url: "api/token",
data: {'': 'Hello Web API'},
success: success,
contentType: 'application/json'
});
function success(data) {
console.log("new token response: ")
console.log(data)
}
任何帮助?
答案 0 :(得分:0)
此处的问题是在您清除搜索到的文本后,适配器的列表后面的大小小于过滤器列表。所以代码需要修改如下
public void addItem(int position, ExampleModel model) {
if(position >= mModel.size()) {
mModel.add(model);
notifyItemInserted(mModel.size()-1);
} else {
mModels.add(position, model);
notifyItemInserted(position);
}
}
并在moveItem功能中进行修改
public void moveItem(int fromPosition, int toPosition) {
final ExampleModel model = mModels.remove(fromPosition);
if(toPosition >= mModels.size()) {
mModels.add(model);
notifyItemMoved(fromPosition, mModels.size()-1);
} else {
mModels.add(toPosition, model);
notifyItemMoved(fromPosition, toPosition);
}
}
希望它可以帮到你!