我尝试了这段代码,但不返回输入的文本。
这是我的Addtocartitems.java:

java - 如何在Android工具栏中使用搜索栏创建嵌套的listview?-LMLPHP java - 如何在Android工具栏中使用搜索栏创建嵌套的listview?-LMLPHP

这是我的Downloadeditems.java:

java - 如何在Android工具栏中使用搜索栏创建嵌套的listview?-LMLPHP

这是我的DownloadedListAdapter2.java:

java - 如何在Android工具栏中使用搜索栏创建嵌套的listview?-LMLPHP

该程序没有错误,但是什么也没发生。
有人可以帮我吗?提前致谢!

最佳答案

在适配器类中创建列表变量

List<DownloadedItems> downloadedItemsList= new ArrayList<>();


在您的构造函数中,请致电写下

public DownloadListAdapter(Context context, int resource, ArrayList<DownloadedItems> object){
    super(context,resource,object);
    this.mcontext= context;
    this.mResource=resource;
    this.downloadedItemsList= object;
}


在适配器中创建获取列表的方法

    public void  setData(List<DownloadedItems> modelList) {
    this.downloadedItemsList= modelList;
    notifyDataSetChanged();
    }


现在,使用新的已过滤列表调用filter方法,并将该列表传递给适配器方法

private void filter(String text) {
    List<DownloadedItems> filteredList = new ArrayList<DownloadedItems>();
    for (DownloadedItems la :langList) {
        if (la.langName.toLowerCase().startsWith(text.toLowerCase())) {
            filteredList.add(la);
        }
        adapter.setData(filteredList);
    }


}


您可以根据需要将方法.startsWith更改为.Contains。此方法返回以输入的字符串开头的项目。 langList是我已经传递给适配器呈现的初始列表。

la.langName.toLowerCase().startsWith


这是过滤器查询,我用来比较过滤器的项目。我正在从列表中搜索语言名称。因此,您可以根据需要进行修改。然后从中调用方法过滤器

 mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {
            filter(newText)
            return true;
        }
    });

关于java - 如何在Android工具栏中使用搜索栏创建嵌套的listview?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60613837/

10-11 22:46
查看更多