首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在字符串类型listview Android上实现searchview

在字符串类型的ListView上实现SearchView,可以通过以下步骤完成:

  1. 创建一个包含字符串的列表(List)作为ListView的数据源。
  2. 创建一个自定义的适配器(Adapter),继承自BaseAdapter或ArrayAdapter,用于将数据源中的字符串显示在ListView中的每个项上。
  3. 在布局文件中添加一个SearchView控件,用于接收用户输入的搜索关键字。
  4. 在Activity或Fragment中,找到ListView和SearchView控件,并设置相应的监听器。
  5. 在SearchView的监听器中,实现搜索功能。当用户输入关键字时,根据关键字过滤数据源中的字符串,并更新适配器的数据集。
  6. 在ListView的适配器中,根据更新后的数据集重新显示列表项。

以下是一个示例代码:

  1. 创建一个包含字符串的列表(List)作为ListView的数据源:
代码语言:java
复制
List<String> dataList = new ArrayList<>();
dataList.add("Apple");
dataList.add("Banana");
dataList.add("Orange");
// 添加更多的字符串...
  1. 创建一个自定义的适配器(Adapter),继承自BaseAdapter或ArrayAdapter,用于将数据源中的字符串显示在ListView中的每个项上:
代码语言:java
复制
public class MyAdapter extends BaseAdapter {
    private List<String> dataList;
    private LayoutInflater inflater;

    public MyAdapter(Context context, List<String> dataList) {
        this.dataList = dataList;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return dataList.size();
    }

    @Override
    public Object getItem(int position) {
        return dataList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
        }

        TextView textView = convertView.findViewById(android.R.id.text1);
        textView.setText(dataList.get(position));

        return convertView;
    }
}
  1. 在布局文件中添加一个SearchView控件,用于接收用户输入的搜索关键字:
代码语言:xml
复制
<SearchView
    android:id="@+id/searchView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
  1. 在Activity或Fragment中,找到ListView和SearchView控件,并设置相应的监听器:
代码语言:java
复制
ListView listView = findViewById(R.id.listView);
SearchView searchView = findViewById(R.id.searchView);
  1. 在SearchView的监听器中,实现搜索功能。当用户输入关键字时,根据关键字过滤数据源中的字符串,并更新适配器的数据集:
代码语言:java
复制
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {
        return false;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        List<String> filteredList = new ArrayList<>();
        for (String item : dataList) {
            if (item.toLowerCase().contains(newText.toLowerCase())) {
                filteredList.add(item);
            }
        }
        ((MyAdapter) listView.getAdapter()).setDataList(filteredList);
        ((MyAdapter) listView.getAdapter()).notifyDataSetChanged();
        return true;
    }
});
  1. 在ListView的适配器中,根据更新后的数据集重新显示列表项:
代码语言:java
复制
public void setDataList(List<String> dataList) {
    this.dataList = dataList;
}

这样,当用户在SearchView中输入关键字时,ListView会根据关键字过滤并显示匹配的字符串项。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的结果

领券