我们如何在listview中搜索项目?

时间:2014-06-18 09:57:47

标签: android

我想从列表视图中搜索日期。我的问题是基于我们如何搜索从日期到日期之间的日期。还重新排列列表视图。

3 个答案:

答案 0 :(得分:0)

要排序,您可以:

    ListView包含的类中的
  • implement Comparable<>;把你的大于,等于和小于compareTo()
  • 中的逻辑
  • 创建一个extends Comparator<>来决定订单的类。

然后使用Collections.sort()订购列表。

对于搜索,您可以保留对支持适配器的ListView的引用,并迭代它,可能会根据需要删除,隐藏或复制匹配的元素到另一个List。

答案 1 :(得分:0)

通过从适配器获取过滤器进行搜索。 http://developer.android.com/reference/android/widget/Filter.html

答案 2 :(得分:0)

您拥有Arraylist中的所有数据只是在您的活动中实现TextWatcher并在onTextchanged中调用filterlist方法。

    @Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    // TODO Auto-generated method stub
    adp.filterList(s);
}
// add this method in adapter
    public emotions_adapter(Context context, ArrayList<String> emotions_symbol,
        ArrayList<String> emotions_name) {
    emo_symbole = emotions_symbol;
    emo_name = emotions_name;
    this.response_name = emotions_name;
    this.response_symbol = emotions_symbol;
    C = context;
    l_Inflater = LayoutInflater.from(context);

}

public void filterList(CharSequence s) {
    if (s.toString().length() > 0) {
        ArrayList<String> filteredname = new ArrayList<String>();
        ArrayList<String> filteredsymbole = new ArrayList<String>();

        for (int i = 0; i < response_name.size(); i++) {

            if (response_name.get(i).toLowerCase().contains(s.toString().toLowerCase())|| response_symbol.get(i).toLowerCase()
                            .contains(s.toString().toLowerCase())) {

                filteredname.add(response_name.get(i));
                filteredsymbole.add(response_symbol.get(i));
            }
        }

        emo_name = filteredname;
        emo_symbole = filteredsymbole;

        notifyDataSetChanged();
    } else {
        emo_name = response_name;
        emo_symbole = response_symbol;
        notifyDataSetChanged();
    }
}