【问题标题】:Creating getFilter for BaseAdapter for Object titles?为对象标题的 BaseAdapter 创建 getFilter?
【发布时间】:2013-06-26 19:37:00
【问题描述】:

我正在使用CardsUI 创建一个ListView,并且我计划使用getFilter() 创建一个搜索。每张卡都有一个title,可通过getTitle() 访问。我见过的每个 getFilter 示例都是针对字符串的。有人知道我如何调整 getFilter() 以匹配 getTitle() 返回的标题并返回标题与给定字符串匹配的对象列表的任何好的示例(或可以提供一个好的示例)吗?

谢谢。

【问题讨论】:

标签: android baseadapter


【解决方案1】:

我已经在我的应用程序中实现了这种功能。

简要说明。 实现你自己的扩展过滤器的类,比如下一个类:

private class PlanetFilter extends Filter {
@Override
    protected FilterResults performFiltering(CharSequence constraint) {
        FilterResults results = new FilterResults();
        // We implement here the filter logic
        if (constraint == null || constraint.length() == 0) {
            // No filter implemented we return all the list
            results.values = planetList;
            results.count = planetList.size();
        }
        else {
            // We perform filtering operation
            List<Planet> nPlanetList = new ArrayList<Planet>();

            for (Planet p : planetList) {
                if (p.getName().toUpperCase().startsWith(constraint.toString().toUpperCase()))
                    nPlanetList.add(p);
            }

            results.values = nPlanetList;
            results.count = nPlanetList.size();

        }
        return results;
    }
}

在你的基础适配器中实现了 Filterable 接口,它必须实现 getFilter() 方法:

@Override
public Filter getFilter() {
    if (planetFilter == null)
        planetFilter = new PlanetFilter();

    return planetFilter;
}

要将所有内容联系在一起,请在您输入文本的edittext 上使用textWatcher

editTxt.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        System.out.println("Text ["+s+"]");
        aAdpt.getFilter().filter(s.toString());                           
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {

    }

    @Override
    public void afterTextChanged(Editable s) {
    }
});

该代码取自下一个tutorial

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2023-03-12
    • 1970-01-01
    • 2020-10-28
    • 2013-07-27
    相关资源
    最近更新 更多