notifyDataSetChanged()在daimajia AndroidSwipeLayout中不起作用

时间:2016-01-28 04:56:33

标签: android listview android-recyclerview

我正在尝试在我的项目中使用AndroidSwipeLayout(https://github.com/daimajia/AndroidSwipeLayout)。一切都很好,符合我的要求。

问题是,当我尝试过滤列表视图时,我无法更新数据集。

对于我提到的同一问题,有一个未解决的问题https://github.com/daimajia/AndroidSwipeLayout/issues/258

任何人都可以为我解决这个问题吗

或任何替代图书馆

1 个答案:

答案 0 :(得分:1)

不太理想的工作: 替代方法是使用筛选列表重置适配器。

假设您在适配器中有列表,维护一个副本以过滤列表中的项目。使用筛选列表重置适配器。

伪代码:

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.
   }
}