阅读量:21
实现模糊搜索功能的方法是在搜索关键字改变时,动态的过滤ListView中的数据,只显示匹配搜索关键字的数据项。
以下是一个简单的示例代码,演示如何在Android中实现ListView的模糊搜索功能:
public class MainActivity extends AppCompatActivity { private ListView listView; private EditText searchEditText; private ArrayAdapter<String> adapter; private ArrayList<String> dataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = findViewById(R.id.listView); searchEditText = findViewById(R.id.searchEditText); // 初始化数据 dataList = new ArrayList<>(); dataList.add("Apple"); dataList.add("Banana"); dataList.add("Cherry"); dataList.add("Durian"); dataList.add("Grape"); // 设置ListView的适配器 adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList); listView.setAdapter(adapter); searchEditText.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) { String searchText = s.toString(); adapter.getFilter().filter(searchText); } @Override public void afterTextChanged(Editable s) {} }); } }
在上面的代码中,我们通过添加一个TextWatcher
来监听搜索框内容的变化,当搜索框内容改变时,调用adapter.getFilter().filter(searchText)
来过滤数据并更新ListView的显示。ListView会根据关键字进行模糊匹配,并只显示匹配项。