我对Android编程很新,所以对我很陌生。我创建了一个应用程序,它只是一个包含一些值的列表视图,每次单击一个项目时,它都会启动一个新的意图。我希望我的列表可以搜索,所以我在它上面添加了一个搜索按钮。
我见过一些使用本地数据库的例子,但是我没有找到关于如何在我的应用程序中实现它的完整教程。
最好的方法是什么? 任何人都可以通过示例向我推荐一个好的网站或向我解释这是如何工作的吗?
谢谢。
答案 0 :(得分:2)
这并不像看起来那么简单,但足够简单。您希望使您的适配器(您需要具有自定义适配器)实现Filterable
接口。然后,当您“执行过滤”时,您将在数据库中执行查询并返回更新的结果,并调用notifyDatasetChanged()
。我很快找不到一个好的例子,但this one已经足够好了。
之后,您需要“连接”适配器的过滤器和EditText。将TextWatcher添加到EditText和afterTextChanged()
调用getFilter().filter(theText)
。
这或多或少。
答案 1 :(得分:1)
请参阅此演示。
我已根据输入EditText的文本实现了ListView的搜索功能。
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
searchTextLength = searchEditText.getText().length();
m_orders.clear();
m_orders = new ArrayList<SearchData>();
//SearchData o1 = new SearchData();
SearchData o[]=new SearchData[search_list.length];
for(int i=0; i<search_list.length; i++)
{
if(searchTextLength <= search_list[i].length())
{
if(searchEditText.getText().toString().equalsIgnoreCase((String) search_list[i].subSequence(0, searchTextLength)))
{
o[i]=new SearchData();
o[i].setTitleName(search_list[i]);
o[i].setsubTitleName(subTitle_list[i]);
m_orders.add(o[i]);
}
}
}
this.m_adapter = new OrderAdapter(this, R.layout.search_row, m_orders);
lv.setAdapter(this.m_adapter);
m_adapter.notifyDataSetChanged();
//getOrders();
//lv1.setAdapter(new ArrayAdapter<String>(SearchActivity.this,R.layout.search_layout , arr_sort));
}
希望它可以帮助你的病情。
答案 2 :(得分:0)