如何使用 Android SearchView 及示例


Android SearchView 控制元件是一個多功能的工具,它能夠在應用內輕鬆實現資訊搜尋,從而提升使用者體驗和高效檢索資料。其直觀且使用者友好的介面簡化了內容發現,允許使用者輸入查詢並快速獲取結果。透過整合 SearchView,應用的整體可用性得到顯著提升。

SearchView 的搜尋功能可以輕鬆地整合到任何 Android 應用中,以實現強大的搜尋功能。本文提供了一個實際示例,探討如何在您的應用中無縫地實現 SearchView。實現後,您的使用者將能夠快速有效地找到所需資訊。

SearchView

Java SearchView 是 Android 框架中的一個控制元件,它使應用程式使用者能夠輕鬆地執行搜尋操作。它提供了一個結構化的使用者介面,以便在應用程式中輸入和提交搜尋查詢。

要使用 SearchView 元件,通常會設定一個監聽器函式來捕獲搜尋查詢事件並管理相關功能。實現此功能需要建立自定義方法來處理查詢文字的更改、查詢提交和查詢清除。

SearchView searchView = findViewById(R.id.searchView);

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {
        // Handle the search query submission
        performSearch(query);
        return true;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        // Handle changes in the search query text
        updateSearchResults(newText);
        return true;
    }
});

方法

要實現 Android SearchView,您可以遵循多種方法。以下是一些您可以採用的方法

  • 使用 onCreateOptionsMenu() 方法

  • 擴充套件 AppCompatActivity 並實現 SearchView.OnQueryTextListener

  • 在 Fragment 中實現 SearchView

使用 onCreateOptionsMenu() 方法

在此方法中,您將在 onCreateOptionsMenu() 中載入選單 XML 檔案,並從選單項中檢索 SearchView 控制元件。透過為搜尋查詢和事件設定監聽器,您可以處理使用者輸入並實現執行搜尋和顯示結果的必要邏輯。

演算法

  • 在 onCreateOptionsMenu() 中載入選單 XML 檔案。

  • 從選單項中檢索 SearchView 控制元件。

  • 為搜尋查詢和事件設定監聽器。

  • 處理使用者輸入並實現執行搜尋和顯示結果的邏輯。

示例

public class MainActivity extends AppCompatActivity {
   private SearchView searchView;

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.menu_main, menu);
      MenuItem searchItem = menu.findItem(R.id.action_search);
      searchView = (SearchView) searchItem.getActionView();

      // Set up search listeners
      searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
         @Override
         public boolean onQueryTextSubmit(String query) {
            // Perform search operation based on the query
            performSearch(query);
            return true;
         }

         @Override
         public boolean onQueryTextChange(String newText) {
            // Update search results as the user types
            updateSearchResults(newText);
            return true;
         }
      });

      return true;
   }

   private void performSearch(String query) {
      // Dummy search operation
      List<String> searchResults = new ArrayList<>();
      searchResults.add("Dummy Result 1");
      searchResults.add("Dummy Result 2");

      // Display search results
      displayResults(searchResults);
   }

   private void updateSearchResults(String newText) {
      // Dummy logic to update search results dynamically
      // based on the user's input
   }

   private void displayResults(List<String> results) {
      // Dummy logic to display the search results
      for (String result : results) {
         Log.d("Search Result", result);
      }
   }
}

輸出

擴充套件 AppCompatActivity 並實現 SearchView.OnQueryTextListener

透過在您的 Activity 類中擴充套件 AppCompatActivity,您可以重寫 onCreateOptionsMenu() 來載入選單 XML 檔案。從選單項中檢索 SearchView 控制元件並實現 SearchView.OnQueryTextListener。重寫其方法來處理搜尋查詢和事件,從而允許您執行搜尋操作並顯示相關結果。

演算法

  • 在 Activity 類中擴充套件 AppCompatActivity。

  • 重寫 onCreateOptionsMenu() 並載入選單 XML 檔案。

  • 從選單項中檢索 SearchView 控制元件。

  • 實現 SearchView.OnQueryTextListener。

  • 重寫其方法 (onQueryTextSubmit() 和 onQueryTextChange()) 以處理搜尋查詢和事件。

  • 根據使用者輸入執行搜尋操作並顯示相關結果。

示例

public class MainActivity extends AppCompatActivity implements SearchView.
OnQueryTextListener {
   private SearchView searchView;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      // Other initialization code

      // Set up search view
      searchView = findViewById(R.id.search_view);
      searchView.setOnQueryTextListener(this);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }

   @Override
   public boolean onQueryTextSubmit(String query) {
      // Perform search operation based on the query
      performSearch(query);
      return true;
   }

   @Override
   public boolean onQueryTextChange(String newText) {
      // Update search results as the user types
      updateSearchResults(newText);
      return true;
   }

   private void performSearch(String query) {
      // Dummy search operation
      List<String> searchResults = new ArrayList<>();
      searchResults.add("Dummy Result 1");
      searchResults.add("Dummy Result 2");

      // Display search results
      displayResults(searchResults);
   }

   private void updateSearchResults(String newText) {
      // Dummy logic to update search results dynamically
      // based on the user's input
   }

   private void displayResults(List<String> results) {
      // Dummy logic to display the search results
      for (String result : results) {
         Log.d("Search Result", result);
      }
   }
}

輸出

在 Fragment 中實現 SearchView

在使用 Fragment 時,您將在 Fragment 的 onCreateOptionsMenu() 中載入選單 XML 檔案。從選單項中檢索 SearchView 控制元件,並在 Fragment 中實現 SearchView.OnQueryTextListener。透過重寫其方法,您可以處理特定於 Fragment 的搜尋查詢和事件,從而啟用搜索功能並相應地顯示結果。

演算法

  • 在 Fragment 的 onCreateOptionsMenu() 中載入選單 XML 檔案。

  • 從選單項中檢索 SearchView 控制元件。

  • 在 Fragment 中實現 SearchView.OnQueryTextListener。

  • 重寫其方法 (onQueryTextSubmit() 和 onQueryTextChange()) 以處理搜尋查詢和事件。

  • 執行搜尋操作並顯示特定於 Fragment 上下文的結果。

示例

public class MyFragment extends Fragment implements 
SearchView.OnQueryTextListener {
   private SearchView searchView;

   @Override
   public void onCreateOptionsMenu(Menu menu, MenuInflater 
inflater) {
      inflater.inflate(R.menu.menu_fragment, menu);
      MenuItem searchItem = menu.findItem(R.id.action_search);
      searchView = (SearchView) searchItem.getActionView();
      searchView.setOnQueryTextListener(this);
   }

   @Override
   public boolean onQueryTextSubmit(String query) {
      // Perform search operation based on the query
      performSearch(query);
      return true;
   }

   @Override
   public boolean onQueryTextChange(String newText) {
      // Update search results as the user types
      updateSearchResults(newText);
      return true;
   }

   private void performSearch(String query) {
      // Dummy search operation
      List<String> searchResults = new ArrayList<>();
      searchResults.add("Dummy Result 1");
      searchResults.add("Dummy Result 2");

      // Display search results
      displayResults(searchResults);
   }

   private void updateSearchResults(String newText) {
      // Dummy logic to update search results dynamically
      // based on the user's input
   }

   private void displayResults(List<String> results) {
      // Dummy logic to display the search results
      for (String result : results) {
         Log.d("Search Result", result);
      }
   }
}

輸出

結論

在本教程中,實現 Android SearchView 為使用者提供了一種便捷的方式來搜尋應用內的特定資訊。透過利用 onCreateOptionsMenu()、擴充套件 AppCompatActivity 和實現 SearchView.OnQueryTextListener 等多種方法,開發人員可以整合搜尋功能並增強使用者體驗。

無論是簡單的搜尋功能還是具有動態結果的更復雜實現,SearchView 都能使開發人員建立直觀的搜尋介面,從而提高應用可用性,並使使用者更容易找到所需內容。

更新於: 2023年7月27日

695 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告