我想通过在ListView
内写一些内容来搜索EditText
。就像我先写“Su”字样一样,所以ListView
中前两个单词为“Su”的内容应该排在最前面。
这是我的代码:
Sear = (AutoCompleteTextView) findViewById(R.id.Search);
Sear.setThreshold(1);
Sear.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
System.out.println("Text ["+s+"]");
sdAdapter.getFilter().filter(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
现在我在EditText
ListView
消息中写点什么。
我的ListView
中有5列。我想搜索该特定人的姓名,并使用该名称搜索ListView
。
这是适配器:
sdAdapter = new StationDetails_Adapter(AllStations.this, R.layout.listview_row2 , Stationlist);
答案 0 :(得分:1)
在ListView
中搜索可以使用本地SQLite DB完成。我想你已经掌握了SQLite数据库的知识,然后按照以下步骤操作:
1)设置ListView
适配器并将所有数据存储在SQLite数据库
2)在DB端写一个简单的查询,如:select * from YOUR_TABLE_NAME where column_name like '%+your_search_keyword+%'
3)在onTextChanged()
方法中执行此查询。
4)使用游标从SQLite DB获取针对搜索关键字的所有数据并设置ListView
适配器
5)如果游标没有返回任何数据,则表示您没有针对搜索关键字的记录。
其他方式:除了SQLite DB,您可以在特定的搜索关键字上设置适配器和过滤器,如:
例如:
String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
"iPhone 4S", "Samsung Galaxy Note 800",
"Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);
// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
lv.setAdapter(adapter);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
MainActivity.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
以上示例来自Android Hive Tutorial
答案 1 :(得分:-1)
您必须在listAdapter中实现filterable。 下面的示例与您想要的相同。
http://www.androidbegin.com/tutorial/android-search-listview-using-filter/