adapter.getFilter().filter(newText) 在 Activity 中不起作用,但在 Fragment 中正常工作

发布于 2025-01-14 07:48:25 字数 1958 浏览 1 评论 0原文

Fragment_Adapter_Calling.java 文件,

MyStudentAdapterU adp = new MyStudentAdapterU(stuData, getContext());
stdRecyclerView.setAdapter(adp);
stdRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

 @Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {



    inflater.inflate(R.menu.search_menu,menu);

    MenuItem item=menu.findItem(R.id.search_menu);

    SearchView searchView=(SearchView)item.getActionView();
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            adp.getFilter().filter(newText);

            return false;
        }
    });

    super.onCreateOptionsMenu(menu, inflater);
}

但当我尝试在 Activity.java 文件中粘贴相同的代码来调用适配器时,它显示错误“无法解析 'ProviderAdapter' 中的方法 'getFilter' adapter.getFilter.filter(newText) 行;

ProviderAdapter adp=new ProviderAdapter(ProviderActivityList.this,lists);
 r1.setAdapter(adp);
 r1.setLayoutManager(new LinearLayoutManager(ProviderActivityList.this));

   @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search_menu,menu);

    MenuItem item=menu.findItem(R.id.search_menu);

    SearchView searchView=(SearchView)item.getActionView();
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            adp.getFilter().filter(newText);


            return false;
        }
    });
    return super.onCreateOptionsMenu(menu);
}

错误图片 错误屏幕截图

Fragment_Adapter_Calling.java file

MyStudentAdapterU adp = new MyStudentAdapterU(stuData, getContext());
stdRecyclerView.setAdapter(adp);
stdRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

 @Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {



    inflater.inflate(R.menu.search_menu,menu);

    MenuItem item=menu.findItem(R.id.search_menu);

    SearchView searchView=(SearchView)item.getActionView();
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            adp.getFilter().filter(newText);

            return false;
        }
    });

    super.onCreateOptionsMenu(menu, inflater);
}

but when I try to paste the same code in Activity.java file to call adapter, It shows an error "Cannot resolve method 'getFilter' in 'ProviderAdapter' on
adapter.getFilter.filter(newText) line;

ProviderAdapter adp=new ProviderAdapter(ProviderActivityList.this,lists);
 r1.setAdapter(adp);
 r1.setLayoutManager(new LinearLayoutManager(ProviderActivityList.this));

   @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search_menu,menu);

    MenuItem item=menu.findItem(R.id.search_menu);

    SearchView searchView=(SearchView)item.getActionView();
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText) {

            adp.getFilter().filter(newText);


            return false;
        }
    });
    return super.onCreateOptionsMenu(menu);
}

Error picture
Error Screenshot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

网白 2025-01-21 07:48:25

在第一个代码片段中,您将 adp 设置为 MyStudentAdapterU,它显然有一个 getFilter() 方法。

在第二个代码片段中,您将 adp 设置为 ProviderAdapter,这显然没有getFilter() 方法。

In the first code snippet, you set adp to MyStudentAdapterU which obviously has a getFilter() method.

In the second code snipper, you set adp to ProviderAdapter which obviously does NOT have a getFilter() method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文