在Android studio中用spinner和listview以及查询按钮完成筛选操作
时间: 2024-03-14 14:46:53 浏览: 128
下拉列表spinner-下拉列表ListView和Spinner
筛选操作可以通过以下步骤在 Android Studio 中完成:
1. 在布局文件中添加 Spinner 和 ListView 组件,并在代码中初始化它们。
2. 在代码中创建一个适配器对象,将数据加载到 ListView 中。
3. 在代码中创建一个数组列表,用于存储所有数据。
4. 在代码中创建一个筛选方法,该方法接收一个字符串参数,并返回一个新的数组列表,该列表包含符合条件的数据。
5. 在代码中为 Spinner 添加一个选择监听器,以便在用户选择筛选条件时调用筛选方法。
6. 在代码中为查询按钮添加一个点击监听器,以便在用户点击时调用筛选方法。
下面是示例代码:
```java
public class MainActivity extends AppCompatActivity {
private Spinner spinner;
private ListView listView;
private Button searchButton;
private ArrayAdapter<String> adapter;
private ArrayList<String> dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = findViewById(R.id.spinner);
listView = findViewById(R.id.listview);
searchButton = findViewById(R.id.search_button);
// 初始化数据
dataList = new ArrayList<>();
dataList.add("Apple");
dataList.add("Banana");
dataList.add("Cherry");
dataList.add("Durian");
dataList.add("Elderberry");
dataList.add("Fig");
// 初始化适配器
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);
listView.setAdapter(adapter);
// 添加选择监听器
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedItem = parent.getItemAtPosition(position).toString();
ArrayList<String> filteredList = filterData(selectedItem);
adapter.clear();
adapter.addAll(filteredList);
adapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// do nothing
}
});
// 添加点击监听器
searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String selectedItem = spinner.getSelectedItem().toString();
ArrayList<String> filteredList = filterData(selectedItem);
adapter.clear();
adapter.addAll(filteredList);
adapter.notifyDataSetChanged();
}
});
}
private ArrayList<String> filterData(String keyword) {
ArrayList<String> filteredList = new ArrayList<>();
for (String item : dataList) {
if (item.toLowerCase().contains(keyword.toLowerCase())) {
filteredList.add(item);
}
}
return filteredList;
}
}
```
在上面的示例中,我们使用了一个包含一些水果名称的字符串列表作为数据源。我们在 `onCreate()` 方法中初始化了 Spinner 和 ListView 组件,并为它们添加了适配器。我们还在 `filterData()` 方法中实现了筛选逻辑,该方法接收一个字符串参数并返回一个新的数组列表,该列表包含符合条件的数据。我们在选择监听器和点击监听器中调用了该方法,并使用适配器更新了 ListView 中的数据。
阅读全文