簡體   English   中英

清除搜索視圖后,如何刷新我的RecyclerView列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM