我试图在我的项目中使用AndroidSwipeLayout(https://github.com/daimajia/AndroidSwipeLayout)。一切工作正常,并且满足我的要求。
问题是,当我尝试过滤列表视图时,无法更新数据集。
对于我提到的相同问题,存在一个未解决的问题https://github.com/daimajia/AndroidSwipeLayout/issues/258
有人可以帮我解决这个问题吗
或任何其他库
最佳答案
不太理想的解决方法:
另一种选择是使用过滤列表重置适配器。
假设您的适配器中有列表,请维护一个副本以过滤列表中的项目。使用过滤的列表重置适配器。
伪代码:
ArrayList<CustomObject> originalList;
ArrayList<CustomObject> filteredList;
filteredList = new ArrayList<>();
filteredList.addAll(originalList);
setAdapter(filteredList); //Sets the adapter with filtered List.
//In your searchView implementation
private void onSearchQuery(String searchString) {
if( searchString == null || searchString.trim().length() == 0 ) {
filteredList.clear();
filteredList.addAll(originalList);
//Since adapter.notifyDataSetChanged() is not working.
setAdapter(filteredList); //Sets the adapter with filtered List.
}
else {
filteredList.clear();
for( CustomObject customObject : originalList ) {
if( customObject.getSearchableField().contains(searchString) ) {
filteredList.add(customObject);
}
}
//Since adapter.notifyDataSetChanged() is not working.
setAdapter(filteredList); //Sets the adapter with filtered List.
}
}