0

我是 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());

}

我应该
在 Edittext 中输入 123456789A 然后只过滤器出现在列表视图中

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

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

4

2 回答 2

1

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

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

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

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

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

这是此列表数据过滤示例的另一个示例

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

于 2013-06-24T13:21:16.543 回答
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));

字符串 search_str=Str.substring(i - 4, i);

将“search_str”放入 SQL 查询

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

于 2013-06-24T13:28:31.933 回答