请尝试在我的listview上实现过滤器.但是每当文本改变时,列表就会消失.请帮助这是我的代码.适配器类.
package com.talagbe.schymn;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class HymnsAdapter extends ArrayAdapter<Hymns> {
ArrayList<Hymns> hymnarray;
Context context;
LayoutInflater inflater;
int Resource;
public HymnsAdapter(Context context, int resource, ArrayList<Hymns> objects) {
super(context, resource, objects);
// TODO Auto-generated constructor stub
hymnarray=objects;
Resource= resource;
this.context=context;
inflater= (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView==null){
convertView= inflater.inflate(Resource,null);
holder= new ViewHolder();
holder.hymntitle= (TextView) …Run Code Online (Sandbox Code Playgroud) 看来,用例的Adapter就是Filterable是通过过滤String或CharSequence可能通过在用户输入EditText,但事实真的是平台提供过滤的唯一标准AdapterS'
如果我有一个可以分类的对象的后备数据结构怎么办?例如,如果我有一个具有enum属性的Shirt对象列表,该color怎么办?用户应该能够从可用color的列表中过滤衬衫列表.作为一个优秀的应用程序开发人员,我想使用过滤机制中构建的平台,但我能找到的所有Filter方法都是这样的filter (CharSequence constraint).我肯定错过了什么.我看到在我自己的自定义中实现这种过滤机制是多么简单BaseAdapter,但感觉应该有一些内置的方法来做自定义过滤器.任何人?提前致谢.
这是我的主要活动.java
package com.example.search;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Filter;
import android.widget.ListView;
public User getUserByName(String firstName, String lastName) {
synchronized (userList) {
Iterator<User> iterator = userList.iterator();
while (iterator.hasNext()) {
User user = (User) iterator.next();
if (user.getFirstName().equals(firstName)
&& user.getLastName().equals(lastName)) {
return user;
}
}
// no user found
return null;
}
}
public class MainActivity extends FragmentActivity {
private EditText …Run Code Online (Sandbox Code Playgroud)