我想在我的应用中实现搜索,但我不想使用单独的Activity来显示我的搜索结果。相反,我只想使用显示在SearchView
下方的建议清单。
我可以在setOnQueryTextListener
上使用SearchView
,听取输入并搜索结果。但是,如何将这些结果添加到SearchView
下方的列表中?我们假设我正在List<String>
中搜索。
答案 0 :(得分:3)
您需要创建的是Content Provider。 通过这种方式,您可以向SearchView添加自定义结果,并在用户输入内容时为其添加自动完成功能。
如果我不记得错误,在我的一个项目中,我做了类似的事情,并且没有花太长时间。
我相信这可能会有所帮助:Turn AutoCompleteTextView into a SearchView in ActionBar instead
还有:SearchManager - adding custom suggestions
希望这有帮助。
<磷>氮答案 1 :(得分:1)
我已经使用带有搜索字符串的EditText在我的应用程序中实现了搜索 在这个EditText下面,我有我想要执行搜索的ListView。
<EditText
android:id="@+id/searchInput"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/input_patch"
android:gravity="center_vertical"
android:hint="@string/search_text"
android:lines="1"
android:textColor="@android:color/white"
android:textSize="16sp" >
</EditText>
<ListView
android:id="@+id/appsList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/searchInput"
android:cacheColorHint="#00000000" >
</ListView>
搜索EditText下方的列表会根据在EditText中输入的搜索文本而更改。
etSearch = (EditText) findViewById(R.id.searchInput);
etSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
searchList();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
函数searchList()进行实际搜索
private void searchList() {
String s = etSearch.getText().toString();
int textlength = s.length();
String sApp;
ArrayList<String> appsListSort = new ArrayList<String>();
int appSize = list.size();
for (int i = 0; i < appSize; i++) {
sApp = list.get(i);
if (textlength <= sApp.length()) {
if (s.equalsIgnoreCase((String) sApp.subSequence(0, textlength))) {
appsListSort.add(list.get(i));
}
}
}
list.clear();
for (int j = 0; j < appsListSort.size(); j++) {
list.add(appsListSort.get(j));
}
adapter.notifyDataSetChanged();
}
此处list
是ListList,它显示在ListView中,adapter
是ListView适配器。
我希望这能以某种方式帮助你。