listview android中的自定义过滤

时间:2013-06-24 13:06:57

标签: android android-listview

我是Android的新手,我有一个包含一些项目的Listview,每个项目包含大小为20个字符的字符串(第1个字符到第16个字符是相同的)。我必须将搜索选项添加到列表视图中,以便,根据最后4个字符,只有列表应该过滤。我见过很多网站,但我找不到。

例如:
列表项目:123456789ABCD1
列表项目:123456789EFGH2
列表项目:123456789IJKL3
列表项目:123456789MNOP4

如果我使用

 @Override
public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
    // TODO Auto-generated method stub

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {




    myAdapter.getFilter().filter(s.toString());

}

我应该输入
编辑文本中的123456789A然后仅在列表视图中进行过滤

我的要求是 我应该进入 在Edittext中AB,以便它开始过滤

我很感激您的想法。提前致谢

2 个答案:

答案 0 :(得分:1)

你可以用两种方式做到这一点。

1)对列表中的数组数据应用过滤器vie ,为此目的使用String.Contains()方法。

示例: - ListArray[i].toString.contains(SearchString); //如果存在搜索字符串,它将返回true。

2)如果将列表数据保存到Sqlite数据库中。您可以运行如下的查询

示例: - sqliteDatabaseObj.Query(TABLE_NAME,null,COLUMN_NAME+" like %"+searchString"%",null,null);

这是Example of list data filtering

的另一个例子

P.S: - 我写的例子在语法上不正确。请检查文档并使用它们,

答案 1 :(得分:0)

  

我认为你要做的是,正如你所说的那样,列表项具有固定的长度(即20个字母),所以首先通过subString方法得到字符串的最后四个字母。然后,您将为搜索查询生成结果字符串。

     

确保搜索字符串

String Str = new String("123456789ABCD");
        int i = Str.length();
        System.out.print("Return Value :");
        System.out.println(Str.substring(10));

        System.out.print("Return Value :");
        System.out.println(Str.substring(i - 4, i));

String search_str = Str.substring(i - 4,i);

  

将“search_str”放入SQL查询

SELECT * FROM table_name WHERE code LIKE'%search_str%'