java - 按多个条件搜索/过滤 ListView

标签 java android listview search

我目前有一个带有 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();
    }
}

最佳答案

您需要编写您自己的 BaseAdapter 来扩展 Filterable。您可以查看 CursorAdapter(它是一个 Filterable 但不支持更改/添加过滤器)。

游标适配器 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.1_r1/android/widget/CursorAdapter.java#CursorAdapter

关于java - 按多个条件搜索/过滤 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8903849/

相关文章:

android - 具有数据收集功能的 Titanium ListViews

java - Spring MVC 不能 Autowiring 集合?

java - 保存和重新加载 Guava 布隆过滤器时出错 - 需要帮助查找代码中的任何错误

java - 将字符串格式的空值从 iBatis 传递到 Postgres DB 中的整数值

java - 不可能的 NPE 被抛出(java)

android - 如何在Android中实现屏幕底部的自定义对话框

.net - 为 Listview 列实现一个很好的自动调整大小机制?

android - Kotlin 属性访问语法如何适用于 Java 类(即 EditText setText)?

android - 如何从 View 寻呼机中的第一个 fragment 选项卡调用第二个 fragment 选项卡

c# - Listview Details View 不显示任何内容