我想在我的应用程序中实现搜索栏,它会根据编辑文本中输入的字母过滤列表视图。这就是我实际上喜欢的设计
所以我想按标题过滤元素,所以我想我必须更改sqlite语句,因为我正在从数据库中填充listview。
我有两个问题:
1.实现自定义搜索栏的最佳方式是:将textwatcher添加到编辑文本并在每次用户输入字母时更改sqlite语句?
2.如何根据用户输入的字母对sqlite进行排序。如果用户按A我想要显示所有具有该字母的项目,无论它是在开头还是在结尾。
答案 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,也可以使用其他逻辑,例如当用户按下特定按钮时。