我是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,以便它开始过滤
我很感激您的想法。提前致谢
答案 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%'