Android 对列表进行查询
时间: 2023-09-30 16:11:31 浏览: 41
在 Android 中,可以通过使用 ListView 或 RecyclerView 来展示列表数据。针对列表进行查询的方法也会有所不同。
如果使用的是 ListView,可以通过 ArrayAdapter 来管理数据,调用它的 `getFilter()` 方法获取一个 Filter 对象,然后使用 `filter()` 方法进行查询。示例代码如下:
```java
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, dataList);
ListView listView = findViewById(R.id.listview);
listView.setAdapter(adapter);
EditText editText = findViewById(R.id.edittext);
editText.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) {
adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {}
});
```
如果使用的是 RecyclerView,可以自定义一个 Filter 来进行过滤。首先在 Adapter 中定义一个 Filter,然后在过滤逻辑中对数据进行过滤即可。示例代码如下:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements Filterable {
private List<String> dataList;
private List<String> filteredDataList;
private Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
List<String> filteredList = new ArrayList<>();
for (String data : dataList) {
if (data.contains(constraint)) {
filteredList.add(data);
}
}
FilterResults filterResults = new FilterResults();
filterResults.values = filteredList;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredDataList = (List<String>) results.values;
notifyDataSetChanged();
}
};
// ... 省略其他方法 ...
@Override
public Filter getFilter() {
return filter;
}
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![.zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)