在ListFragment上使用SearchView控件进行过滤,可以按照以下步骤进行:
<SearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:queryHint="Search"
/>
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_main, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
// 在这里进行过滤操作
adapter.getFilter().filter(newText);
return true;
}
});
}
getFilter()
方法进行过滤。如果你使用的是自定义的适配器,需要在适配器中实现Filterable接口,并重写getFilter()
方法。以下是一个示例:public class MyAdapter extends ArrayAdapter<String> implements Filterable {
private List<String> originalData;
private List<String> filteredData;
public MyAdapter(Context context, List<String> data) {
super(context, android.R.layout.simple_list_item_1, data);
originalData = data;
filteredData = data;
}
@Override
public int getCount() {
return filteredData.size();
}
@Override
public String getItem(int position) {
return filteredData.get(position);
}
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
List<String> filteredList = new ArrayList<>();
if (constraint == null || constraint.length() == 0) {
filteredList.addAll(originalData);
} else {
String filterPattern = constraint.toString().toLowerCase().trim();
for (String item : originalData) {
if (item.toLowerCase().contains(filterPattern)) {
filteredList.add(item);
}
}
}
results.values = filteredList;
results.count = filteredList.size();
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredData = (List<String>) results.values;
notifyDataSetChanged();
}
};
}
}
以上就是在ListFragment上使用SearchView控件进行过滤的步骤。通过监听SearchView的输入,然后在适配器中进行过滤操作,可以实现根据用户输入动态过滤列表项的功能。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云