Android在应用程序中添加自定义搜索栏

时间:2012-01-13 09:04:21

标签: android sqlite uisearchbar

我想在我的应用程序中实现搜索栏,它会根据编辑文本中输入的字母过滤列表视图。这就是我实际上喜欢的设计

enter image description here

所以我想按标题过滤元素,所以我想我必须更改sqlite语句,因为我正在从数据库中填充listview。

我有两个问题:

1.实现自定义搜索栏的最佳方式是:将textwatcher添加到编辑文本并在每次用户输入字母时更改sqlite语句?

2.如何根据用户输入的字母对sqlite进行排序。如果用户按A我想要显示所有具有该字母的项目,无论它是在开头还是在结尾。

2 个答案:

答案 0 :(得分:2)

因此,无论您使用何种Adapter,实现此目标的事情都非常简单。首先,您需要创建TextWatcher并将其添加到Edit Text。在onAfterTextChanged()中,您可以创建新的SQL语句,如:

String sql = "SELECT title FROM cards WHERE title LIKE '%"+someString+"%'"
//where someString is `Charsequence` which you get in your onAfterTextChanged()

如果您使用ArrayList或任何其他类型的Lists来存储数据,那么在重新获取数据之前,您必须清除它们,以便获取新数据。而且你可以简单地拨打adapter.notifySetDataChanged()。它应该工作。至少这是我这样做的方式。也许这不是最好的方式,但它正在发挥作用。

答案 1 :(得分:0)

您的数据库大小是多少?如果它不是一个大的那么我认为简单的SQL应该适合你:

SELECT  Column1, Column2
FROM    myTable
WHERE   myColumn LIKE 'somecharacter%'

您可以在用户键入时调用DB,也可以使用其他逻辑,例如当用户按下特定按钮时。