android 下拉列表 过滤
时间: 2024-02-06 10:07:37 浏览: 28
以下是一个Android下拉列表过滤的示例:
```java
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private Spinner spinner;
private EditText editText;
private ListView listView;
private List<String> dataList;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner = findViewById(R.id.spinner);
editText = findViewById(R.id.editText);
listView = findViewById(R.id.listView);
// 初始化数据
dataList = new ArrayList<>();
dataList.add("Apple");
dataList.add("Banana");
dataList.add("Cherry");
dataList.add("Durian");
dataList.add("Grape");
dataList.add("Lemon");
dataList.add("Orange");
dataList.add("Peach");
dataList.add("Strawberry");
dataList.add("Watermelon");
// 创建适配器
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();
filterData(selectedItem);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// Do nothing
}
});
// 设置文本输入监听事件
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Do nothing
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String inputText = s.toString();
filterData(inputText);
}
@Override
public void afterTextChanged(Editable s) {
// Do nothing
}
});
}
private void filterData(String filterText) {
List<String> filteredList = new ArrayList<>();
for (String item : dataList) {
if (item.toLowerCase().contains(filterText.toLowerCase())) {
filteredList.add(item);
}
}
adapter.clear();
adapter.addAll(filteredList);
adapter.notifyDataSetChanged();
}
}
```
这个示例中,我们使用了`Spinner`来展示下拉列表,使用`EditText`来输入过滤条件,使用`ListView`来展示过滤后的结果。当选择下拉列表中的项或输入过滤条件时,会根据选择的项或输入的条件对数据进行过滤,并更新展示的列表。