【问题标题】:Search function on action bar for list view列表视图的操作栏搜索功能
【发布时间】:2017-04-16 07:17:52
【问题描述】:

我需要帮助才能实现操作栏上的搜索功能。我本教程展示了如何使用简单的列表项进行列表视图,而我的代码中,我使用了自定义适配器类。

【问题讨论】:

  • 哪一个是第 78 行?
  • searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){

标签: java android listview arraylist


【解决方案1】:

而不是 getVeiw 方法上的这段代码:

view = getLayoutInflater().inflate(R.layout.list_black_text, null);

用这个

 if (view == null) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        view= inflater.inflate(R.layout.list_black_text, null);
    }

也许这对你有用

【讨论】:

  • context.getSystemService 和 convertView 给我错误
  • 因为你在 mainActivity 你不需要上下文再看一次我更新了
  • 我为你修复了它再次锁定答案。
  • 没有更多错误,但是当我运行它时我的应用程序仍然停止。当我单击调试时,它显示此行错误:searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
【解决方案2】:

看起来您的 searchView 为空。而不是这个:

inflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.item_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);

使用这个:

inflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.item_search);
SearchView searchView = (SearchView) searchItem.getActionView();

看看documentation

编辑

我复制了您的代码并进行了测试。我发现了一个错误。我不知道是另一个错误还是与您遇到的错误相同。

当您声明 ListView 变量时,您将设置为全局范围,但是当您给它一个值(R.id.listView 值)时,您正在声明另一个具有方法范围的 ListView 变量。

不要这样做ListView listView = (ListView) findViewById(R.id.listView);

这样做listView = (ListView) findViewById(R.id.listView);

进行更改,此行:listView.setAdapter(customAdapter); 不会给您 NullPointerException。

我希望修复您的代码。在其他情况下,您应该将您的 logcat 输出放在您的问题中以获取更多详细信息。在你未来的问题中也是如此;)。

【讨论】:

  • 我已经更改了,但我的应用程序仍然停止。它仍然在这条线上给我错误 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
  • 你的 menu.xml 文件看起来怎么样?
  • 你好,豪尔赫。我已经尝试过了。当我将自定义适配器更改为适配器时,它会出现错误。
  • @让你不用换适配器,只需要换listView行
  • 当我运行应用程序崩溃并给我这一行时,@jorge bu 不再出现错误:
【解决方案3】:

这行代码给你空指针异常,因为它没有 存在于您当前的布局中。检查你的 xml 文件 man!

searchView.setOnQueryTextListener(new  SearchView.OnQueryTextListener(){

并查看您的代码,其中缺少 ;搜索后视图 声明

SearchView searchView = (SearchView)

【讨论】:

  • 它没有丢失,那句话在下一行继续。
猜你喜欢
  • 2012-09-04
  • 2020-04-02
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
相关资源
最近更新 更多