我有一個ListView,帶有一個擴展BaseAdapter的自定義適配器。 ListView的來源是一個帶有自定義對象的ArrayList。這些自定義對象具有最喜歡的成員變量。我希望用戶能夠點擊操作欄中的圖標並切換列表是顯示所有對象,還是僅顯示「favorite」屬性設置爲true的對象。根據是否選擇「收藏夾」選項來篩選ListView
我的第一種類似hack-y的解決方案是創建兩個ArrayLists,其中一個包含所有對象,其中一個包含所有的收藏夾。然後在動作按鈕點擊,轉換適配器源列表兩個列表之間是這樣的:
protected void toggleList(){
CustomAdapter adapter;
if (favoriteSelected){
adapter=new CustomAdapter(this,favoriteList);
}else{
adapter=new CustomAdapter(this,fullList);
}
listView.setAdapter(adapter);
}
這似乎是它的工作,但我有一個很難相信,沒有某種形式的清潔方法過濾列表視圖的結果。我所能找到的唯一信息是基於用戶輸入的文本進行過濾。
肯定,實現自己的Filter類,在YourAdapter.getFilter返回它的實例()方法,(YourAdapter需要實現的可篩選接口) – pskink