Tôi cần triển khai chức năng tìm kiếm bên trong ứng dụng Android sử dụng thanh công cụ, SlidingTabLayout và ViewPager chứa các đoạn. Bên trong mỗi đoạn có một RecyclerView với danh sách các mục.Thanh công cụ với bộ lọc tạm thời SearchView RecyclerView
dữ liệu RecyclerView được tĩnh được định nghĩa trong lớp riêng biệt (DataAccess.java) và những danh sách được cập nhật và RecyclerView được làm mới chỉ bằng cách gọi (không thông qua dữ liệu mới)
mRecyclerView.getAdapter().notifyDataSetChanged();
Có cách nào đơn giản để lọc tạm thời RecyclerView mà không thay đổi dữ liệu và sau khi người dùng nhấn nút quay lại bên trong Thanh công cụ để xóa bộ lọc và hiển thị danh sách inital.
Trước khi nhấn vào biểu tượng Tìm kiếm bên trong thanh thực đơn:
Vì vậy, khi người dùng gõ "Josip ..." bộ lọc sẽ được kích hoạt
và sau khi ông nhấn nút X trong SearchView người dùng sẽ nhận được dữ liệu giống như trước đây mà không có bộ lọc.
@Override
public boolean onQueryTextChange(String newText) {
// filter data (temporary remove all items from DataAccess.list that don't .startsWith(newText)
}
@Override
public boolean onQueryTextSubmit(String query)
// Doesn't help if I revert deleted items here
}
Cảm ơn câu trả lời của người đàn ông !! Tôi nên gọi flushFilter() ở đâu? – fpopic
IN @Override boolean công khai trênQueryTextChange (String newText) { if (text.isEmpty()) ((ItemAdapter) myRecList.getAdapter) .flushFilter(); } HOẶC IN OnActionExpandListener.onMenuItemActionCollapse (MenuItem item) – merovingen
searchView.setOnCloseListener() là điều, cảm ơn dù bình luận của bạn đã đưa tôi đi đúng hướng! – fpopic