class MyFilter extends Filter { //我们在performFiltering(CharSequence charSequence)这个方法中定义过滤规则 @Override protected FilterResults performFiltering(CharSequence charSequence) { FilterResults result = new FilterResults(); List<Note> list; if (TextUtils.isEmpty(charSequence)) {//当过滤的关键字为空的时候,我们则显示所有的数据 list = backList; } else {//否则把符合条件的数据对象添加到集合中 list = new ArrayList<>(); for (Note note : backList) { if (note.getContent().contains(charSequence)) { list.add(note); } } } result.values = list; //将得到的集合保存到FilterResults的value变量中 result.count = list.size();//将集合的大小保存到FilterResults的count变量中 return result; } //在publishResults方法中告诉适配器更新界面 @Override protected void publishResults(CharSequence charSequence, FilterResults filterResults) { noteList = (List<Note>)filterResults.values; if (filterResults.count>0){ notifyDataSetChanged();//通知数据发生了改变 }else { notifyDataSetInvalidated();//通知数据失效 } } } }这里运用了哪些技术
时间: 2024-02-10 19:14:20 浏览: 26
这段代码主要运用了Android中的Filter类,用于过滤搜索结果。在这个类中,我们定义了两个方法:
1. performFiltering(CharSequence charSequence):这个方法定义了过滤规则,它接受一个CharSequence参数,它代表用户输入的过滤条件。在这个方法中,我们根据用户输入的过滤条件,过滤出符合条件的Note对象,并把它们保存到一个List集合中。最后,我们把这个集合保存到FilterResults对象中。
2. publishResults(CharSequence charSequence, FilterResults filterResults):这个方法在过滤完成后被调用。在这个方法中,我们把过滤后得到的Note对象集合赋值给noteList变量,并通知数据发生了改变。如果过滤结果为空,我们则通知数据失效。
相关问题
public class MyFilter implements Filter { private ArrayList<String> patient; @Override public void init(FilterConfig filterConfig) throws ServletException { patient=new ArrayList<>(); patient.add("/order"); patient.add("/orderList"); patient.add("/psychological"); }
这是一个 Java Servlet 中的过滤器(Filter)类。该类实现了 Filter 接口,并重写了 init() 方法。在 init() 方法中,该类初始化了一个 ArrayList 对象 patient,并添加了三个字符串元素。
这个过滤器的作用是对请求的 URL 进行过滤,只有请求的 URL 在 patient 列表中的才能被通过,否则将被过滤掉。具体的实现需要在 doFilter() 方法中进行,该方法接收一个 ServletRequest 对象和一个 ServletResponse 对象,可以在其中进行过滤的操作。
package com; import java.io.IOException; import javax.servlet.*; public class MyFilter implements Filter{ // 字符编码 private String encoding; public MyFilter() { // TODO Auto-generated constructor stub } @Override public void destroy() { // TODO Auto-generated method stub } @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub // 获取字符编码 encoding = filterConfig.getInitParameter("encoding"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // 判断字符编码是否有效 if (encoding != null) { // 设置request字符编码 request.setCharacterEncoding(encoding); // 设置response字符编码 response.setContentType("text/html; charset="+encoding); } chain.doFilter(request, response); } }
这是一个 Java 代码段,它定义了一个名为 MyFilter 的过滤器,实现了 Filter 接口。它包含三个方法:destroy()、init(FilterConfig filterConfig) 和 doFilter()。在 init() 方法中,它获取了一个名为 encoding 的初始化参数,并将其存储在一个成员变量中。在 doFilter() 方法中,它检查 encoding 是否为 null,如果不为 null,则设置 request 和 response 的字符编码为该值。最后,它调用了 FilterChain 中的 doFilter() 方法,继续处理请求。