android listview 搜索框
时间: 2023-09-11 11:02:06 浏览: 263
Android ListView搜索框是一种在ListView中实现搜索功能的控件。它通常位于ListView的顶部,用户可以在搜索框中输入关键词,ListView会根据输入的关键词实时过滤显示符合条件的数据。
实现ListView搜索框的一种常见方法是使用TextWatcher监听搜索框内容的变化,在TextWatcher中实时更新ListView的显示。具体步骤如下:
1. 在布局文件中添加ListView和搜索框:
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<SearchView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
```
2. 在Activity或Fragment中获取ListView和搜索框的引用,并设置适配器:
```java
ListView listView = findViewById(R.id.list_view);
SearchView searchView = findViewById(R.id.search_view);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
```
3. 添加TextWatcher监听搜索框的文本变化:
```java
searchView.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
```
这样,当用户在搜索框中输入文本时,ListView会根据输入的文本实时过滤显示符合条件的数据。adapter.getFilter().filter(s)会根据输入的文本s对数据源进行过滤操作。
总结一下,Android ListView搜索框可以通过TextWatcher来监听搜索框的文本变化,并通过适配器的过滤机制实时更新ListView的显示,从而实现搜索功能。
阅读全文