如何在Android中使用编辑文本搜索列表视图?
我想通过在EditText中写入一些内容来搜索ListView。比如,如果我先写单词Su,那么ListView中包含前两个单词Su的内容应该位于顶部 这是我的代码:如何在Android中使用编辑文本搜索列表视图?,android,android-listview,Android,Android Listview,我想通过在EditText中写入一些内容来搜索ListView。比如,如果我先写单词Su,那么ListView中包含前两个单词Su的内容应该位于顶部 这是我的代码: Sear = (AutoCompleteTextView) findViewById(R.id.Search); Sear.setThreshold(1); Sear.addTextChangedListener(new TextWatcher() { @Override publ
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);
您必须在listAdapter中实现filterable。 下面的例子做了和您想做的相同的事情 可以使用本地SQLite数据库在ListView中进行搜索。我想您应该了解SQLite数据库,然后按照如下步骤操作: 1设置ListView适配器并将所有数据存储在SQLite数据库中 2在DB端编写一个简单的查询,如:从您的\u表\u名称中选择*,其中列\u名称如“%+您的\u搜索\u关键字+%” 3在ContextChanged方法中执行此查询 4使用游标从SQLite DB获取搜索关键字的所有数据,并设置ListView适配器 5若光标不返回任何数据,则表示您并没有搜索关键字的记录 其他方式:除了SQLite DB之外,您可以在特定的搜索关键字上设置适配器和过滤器,如: 例如:
上面的示例是从中引用的,如果它有助于您不搜索listview,请尝试此处。您将搜索Stationlist。在筛选数据时是否调用notifyDatasetChanged?我很困惑。没用,我帮了忙。我在下面做了一个复制粘贴的工作。你为什么要发布这个链接作为答案呢。最好发布部分代码。所以它可能会解决OP问题。@Piyus。。。老兄,如果它已经在其他地方运行了代码,那么最好是共享链接,而不是粘贴代码。否则,开发人员可能会感到困惑。然后你需要发表评论!此方面的帮助:此方面的帮助:
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
}
});