SearchView trong Android
SearchView là một thành phần giao diện người dùng quan trọng trong Android cho phép người dùng tìm kiếm nội dung trong ứng dụng của bạn. Trong bài viết này, chúng ta sẽ giới thiệu khái niệm, vai trò, phân tích các thuộc tính, cách sử dụng và đưa ra ví dụ minh họa về SearchView trong Android.
1. Giới thiệu về SearchView trong Android
SearchView là một thành phần giao diện người dùng cho phép người dùng nhập từ khóa tìm kiếm và tìm kiếm nội dung trong ứng dụng của bạn. SearchView cung cấp một giao diện người dùng trực quan và tiện lợi để tìm kiếm nội dung và cũng có thể tích hợp với các thành phần khác như RecyclerView hoặc ListView để hiển thị kết quả tìm kiếm.
Việc tích hợp SearchView vào ứng dụng giúp cải thiện trải nghiệm người dùng bằng cách tăng khả năng tìm kiếm và truy cập nội dung của ứng dụng của bạn. Nó cũng giúp giảm thiểu thời gian và công sức cần thiết để tìm kiếm thông tin, tăng tính tiện lợi cho người dùng.
Bài viết này được đăng tại [free tuts .net]
2. Các thuộc tính của SearchView trong Android
SearchView có nhiều thuộc tính khác nhau để tùy chỉnh và điều chỉnh hiệu quả. Sau đây là một số thuộc tính quan trọng của SearchView:
android:iconifiedByDefault
: xác định xem SearchView có được hiển thị ở trạng thái mở rộng hay thu gọn khi được tạo ra.android:queryHint
: xác định văn bản mô tả cho ô tìm kiếm, dựa trên giá trị đặt sẵn.android:layout_width
vàandroid:layout_height
: xác định kích thước của SearchView.android:imeOptions
: cho phép tùy chỉnh hành vi bàn phím khi nhập liệu vào ô tìm kiếm.android:inputType
: xác định loại dữ liệu đầu vào được chấp nhận bởi SearchView.android:iconified
: xác định xem SearchView có được hiển thị ở trạng thái mở rộng hay thu gọn.
Để hiểu hơn về các thuộc tính của SearchView trong Android, chúng ta sẽ tìm hiểu đến cách sử dụng của nó.
3. Cách sử dụng của SearchView trong Android
Để sử dụng SearchView trong ứng dụng của bạn, bạn cần thêm SearchView vào layout XML của bạn.Sau đó, bạn có thể tìm kiếm dữ liệu bằng cách bắt sự kiện setOnQueryTextListener()
của SearchView.
Sau đây là ví dụ cụ thể về SearchView trong Android để có thể tìm kiếm các bài hát trong list các bài hát.
Đầu tiên chúng ta cần tạo một layout cho activity chứa SearchView và ListView để hiển thị danh sách các bài hát.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <SearchView android:id="@+id/searchView" android:layout_width="match_parent" android:layout_height="wrap_content" android:queryHint="Search songs..." /> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@null" android:dividerHeight="0dp" android:scrollbars="vertical" /> </LinearLayout>
Tiếp theo, chúng ta cần tạo một Adapter để hiển thị danh sách các bài hát.
SongAdapter.java
public class SongAdapter extends BaseAdapter { private ArrayList<String> songs; public SongAdapter(ArrayList<String> songs) { this.songs = songs; } @Override public int getCount() { return songs.size(); } @Override public Object getItem(int position) { return songs.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false); } TextView textView = convertView.findViewById(android.R.id.text1); textView.setText(songs.get(position)); return convertView; } public void filter(String searchText) { songs.clear(); if (searchText.length() == 0) { songs.addAll(MainActivity.songList); } else { for (String song : MainActivity.songList) { if (song.toLowerCase().contains(searchText.toLowerCase())) { songs.add(song); } } } notifyDataSetChanged(); } }
Trong Adapter, chúng ta sử dụng phương thức filter() để lọc danh sách các bài hát dựa trên từ khóa tìm kiếm.
Cuối cùng, chúng ta có thể tạo MainActivity để hiển thị danh sách các bài hát và cho phép tìm kiếm bài hát theo tên:
MainActivity.java
public class MainActivity extends AppCompatActivity { private ListView listView; private ArrayAdapter<String> adapter; private SearchView searchView; private String[] songs = {"Hello", "Rolling in the Deep", "Someone Like You", "Skyfall", "Set Fire to the Rain", "Make You Feel My Love", "Chasing Pavements", "Water Under the Bridge", "When We Were Young", "All I Ask", "Turning Tables", "Rumor Has It"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.list_view); adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, songs); listView.setAdapter(adapter); searchView = findViewById(R.id.search_view); searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return false; } @Override public boolean onQueryTextChange(String newText) { adapter.getFilter().filter(newText); return false; } }); } }
Trong ví dụ này, chúng ta sử dụng ArrayAdapter để hiển thị danh sách các bài hát trên một ListView. Sau đó, chúng ta tạo một SearchView và bắt sự kiện setOnQueryTextListener()
để lắng nghe sự kiện nhập và thay đổi văn bản tìm kiếm. Khi người dùng nhập văn bản tìm kiếm mới, chúng ta gọi phương thức getFilter()
để lọc danh sách và hiển thị kết quả tìm kiếm phù hợp trên ListView.
4. Tổng kết
Trên đây là những thông tin về khái niệm, vai trò, các thuộc tính và cách sử dụng SearchView trong Android. Đây là một thành phần UI quan trọng giúp người dùng dễ dàng tìm kiếm và lọc dữ liệu trên ứng dụng của bạn. Hi vọng với những kiến thức về SearchView này, bạn sẽ có thể tùy chỉnh và sử dụng thành phần UI này một cách hiệu quả trong các ứng dụng Android của mình.