頁面包含一個 Spinner(下拉選擇器)和一個 ListView(使用 BaseAdapter),要求選擇 Spinner 某項時,ListView 只顯示符合條件的數據,其餘隱藏。
spinner.setOnItemSelectedListener 獲取用戶選中的條件值。listViewAdapter.notifyDataSetChanged() 觸發 UI 更新。// 原始完整數據
List- allItems = loadAllItems();
// Spinner 選擇監聽
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> parent, View view, int position, long id) {
String filter = parent.getItemAtPosition(position).toString();
List
- filtered = new ArrayList<>();
for (Item item : allItems) {
if (filter.equals("全部") || item.getCategory().equals(filter)) {
filtered.add(item);
}
}
// 更新 Adapter 內部數據並刷新
listAdapter.updateData(filtered); // 自定義方法替換內部列表
listAdapter.notifyDataSetChanged();
}
@Override public void onNothingSelected(AdapterView> parent) {}
});
public void updateData(List- newData) {
this.data.clear();
this.data.addAll(newData);
}
Filterable 接口實現 Filter 邏輯,配合 SearchView 更靈活。「Spinner 選擇 → 篩選數據源 → Adapter 更新 → notifyDataSetChanged」是 Android 列表篩選的標準模式,簡單高效。