Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按多个标准搜索/筛选ListView_Java_Android_Listview_Search - Fatal编程技术网

Java 按多个标准搜索/筛选ListView

Java 按多个标准搜索/筛选ListView,java,android,listview,search,Java,Android,Listview,Search,我目前有一个带有ListView和EditText小部件的布局。 ListView中的对象包含出发地点和目的地。 EditText用于过滤出发地点。 我想添加另一个EditText小部件,以便能够根据出发地点和目的地过滤列表。 你知道如何添加另一个过滤类,然后根据偏离和目的过滤ListView内容吗 public class PlacesActivity extends Activity{ private EditText SearchText; private RelativeLayout s

我目前有一个带有ListView和EditText小部件的布局。 ListView中的对象包含出发地点和目的地。 EditText用于过滤出发地点。 我想添加另一个EditText小部件,以便能够根据出发地点和目的地过滤列表。 你知道如何添加另一个过滤类,然后根据偏离和目的过滤ListView内容吗

public class PlacesActivity extends Activity{
private EditText SearchText;
private RelativeLayout search;
private ImageButton btnSearchClose;

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.places_layout);

SearchText = (EditText) findViewById(R.id.SearchBox);
SearchText.addTextChangedListener(filterTextWatcher);

btnSearchClose = (ImageButton)findViewById(R.id.SearchClose);
placesListView = (ListView) findViewById(R.id.PlacesListView);

}

private TextWatcher filterTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
    adapter.getFilter().filter(s);
}

    private final class MyFilter extends Filter {
    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        FilterResults oReturn = new FilterResults();
        ArrayList<Routes> results = new ArrayList<Routes>();
        orig = routes;  
        }

        if (constraint != null) {
            if (orig != null && orig.size() > 0) {
                for (Routes o : orig) {
                    String Constr = constraint.toString();
                    constraint = Constr.subSequence(0, Constr.length());

                    String FromRoute = o.getTripFrom().toLowerCase();
                    if (FromRoute.startsWith((String) constraint)) {
                        results.add(o);
                    }   
                }
                oReturn.values = results;
            }
        }
        return oReturn;
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        ArrayList<Routes> objects = new ArrayList<Routes>();
        objects = (ArrayList<Routes>)results.values;
        routes = objects;
        notifyDataSetChanged();
    }
}
公共类PlacesActivity扩展活动{
私人编辑文本搜索文本;
私人关系搜索;
私有图像按钮btnSearchClose;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.places\u布局);
SearchText=(EditText)findViewById(R.id.SearchBox);
SearchText.addTextChangedListener(filterTextWatcher);
btnSearchClose=(ImageButton)findViewById(R.id.SearchClose);
placesListView=(ListView)findViewById(R.id.placesListView);
}
私有TextWatcher filterTextWatcher=新TextWatcher(){
公共无效后文本已更改(可编辑){
adapter.getFilter().filter;
}
私有最终类MyFilter扩展了筛选器{
@凌驾
受保护的筛选器结果性能筛选(CharSequence约束){
FilterResults oReturn=新的FilterResults();
ArrayList结果=新建ArrayList();
orig=路线;
}
if(约束!=null){
if(orig!=null&&orig.size()>0){
适用于(路线o:orig){
字符串Constr=constraint.toString();
constraint=Constr.subSequence(0,Constr.length());
字符串FromRoute=o.getTripFrom().toLowerCase();
if(FromRoute.startsWith((字符串)约束)){
结果:添加(o);
}   
}
oReturn.values=结果;
}
}
返回或返回;
}
@凌驾
受保护的void publishResults(CharSequence约束、FilterResults结果){
ArrayList对象=新的ArrayList();
objects=(ArrayList)results.values;
路由=对象;
notifyDataSetChanged();
}
}

您需要编写自己的
BaseAdapter
,它扩展了
Filterable
。您可以查看
游标适配器如何使用(
Filterable
,但不支持更改/添加筛选器)

游标适配器