效果
package com.wh.jia.demo2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.Toast;
import java.util.ArrayList;
public class Main9Activity extends AppCompatActivity {
private SearchView searchView;
private ListView listView;
//自动完成的列表
private final String[] mStrings = {"aaaaa","bbbbb","ccccc"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main9);
listView = findViewById(R.id.lv);
searchView = findViewById(R.id.sv);
listView.setAdapter(new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,mStrings));
//设置ListView启用过滤
listView.setTextFilterEnabled(true);
//设置默认是否自动缩小为图标
searchView.setIconifiedByDefault(false);
//设置显示搜索按钮
searchView.setSubmitButtonEnabled(true);
//设置默认显示的提示文本
searchView.setQueryHint("查找");
//为SearchView组件设置事件监听器
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
Toast.makeText(Main9Activity.this, "你选择的是"+s, Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onQueryTextChange(String s) {
if (TextUtils.isEmpty(s)){
//清除listView过滤
listView.clearTextFilter();
}else{
//使用用户输入内容对listView列表项进行过滤
listView.setFilterText(s);
}
return true;
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Main9Activity">
<SearchView
android:id="@+id/sv"
android:layout_width="match_parent"
android:layout_height="70dp"
/>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
使用下面的代码可以使Android默认Toast取消。
public boolean onQueryTextChange(String newText) {
ListAdapter adapter = listView.getAdapter();
if (adapter instanceof Filterable) {
Filter filter = ((Filterable) adapter).getFilter();
if (newText == null || newText.length() == 0) {
filter.filter(null);
} else {
filter.filter(newText);
}
}
return true;
}