實現模糊搜索功能的方法是在搜索關鍵字改變時,動態的過濾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會根據關鍵字進行模糊匹配,并只顯示匹配項。