[英]How to refresh my RecyclerView list when searchview is cleared?
輸入搜索查詢文本時,我會在RecyclerView
過濾我的卡片項目,並將其顯示在頂部。 但是,由於某種原因清除了所有文本后,列表不會返回到原始狀態。 如何刷新我的RecyclerView
列表? 下面的代碼應該給您一個更好的主意。
@Override
public boolean onQueryTextChange(String newText) {
final List<Number> filteredModelList = filter(numbers, newText);
Log.v("App", newText + ", " + numbers.size() + ", " + filteredModelList.size());
adapter.animateTo(filteredModelList);
list.scrollToPosition(0);
adapter.notifyDataSetChanged();
if (newText.equalsIgnoreCase("")){
try{
Log.e("SEARCH VIEW", "I CAN ENTER HERE"); //But the list doesn't refresh
adapter.animateTo(numbers);
adapter.notifyDataSetChanged();
list.setAdapter(adapter);
list.scrollToPosition
} catch(Exception e){
Log.e("Caught Exception", e.toString());
}
}
return true;
}
當沒有項目與搜索匹配時,這是有問題的-屏幕只是空白,沒有卡片,並且SearchView
上的“ X”按鈕也不可見。 當X可見時,我觸摸它,列表將返回其原始狀態。 第二個問題,是否有辦法始終顯示關閉圖標(“ X”)?
當您在數組上應用過濾器時,只有數組中的搜索記錄可用,然后清除時間數組沒有值的搜索文本...
因此,當您刪除所有搜索文本時,您將創建一個臨時數組並存儲原始數組,並對臨時數組應用過濾器,然后將其添加到主數組並設置為listview,然后在主數組中添加臨時數組並設置為適配器。
注意:-始終在夯實陣列上應用過濾器,並在主陣列中添加結果並設置為適配器
希望對您有幫助。
請記住,您有一個將數據加載到RecyclerView中的方法,因此您要執行的操作是在IF語句中再次調用該方法,例如:當newText
長度等於 zero
,請執行以下操作……
下面是算法:
if (newText.length() == 0){
//Reload the data Again , use the existing method you have of loading data in the RecyclerView .
}
如果您有任何問題,只需將代碼加載數據再次發布到RecyclerView
,我將再次向您顯示。
@Override
public boolean onQueryTextChange(String newText) {
if(TextUtils.isEmpty(newText)){ //Show all data
adapter.animateTo(numbers);
adapter.notifyDataSetChanged();
return ;
}
//Do Filter
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.