当前位置: 首页 > 知识库问答 >
问题:

Android,当按下“后退”按钮关闭searchView时,如何关闭ListView

章鸿光
2023-03-14

我有一个带有searchView图标的操作栏。我点击searchView图标,出现softInputMode键盘,我的ListView出现用于搜索。但是,当您关闭searchView时,searchView会关闭,但我无法让ListView在searchView关闭时也关闭。

下面是我在activity_maps中的ListView代码。xml

<ListView
    android:id="@+id/list"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="#ffffff"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0"
    tools:layout_editor_absoluteX="0dp"
    />

地图ctivity.java

    ArrayAdapter<String> adapter; 


    @Override
   public boolean onCreateOptionsMenu(final Menu menu){

    final ListView lv = (ListView) findViewById(R.id.list);

    ArrayList<String> arrayList = new ArrayList<>();                      

      arrayList.addAll(Arrays.asList(getResources().getStringArray(R.array.array_states_trial)));


    adapter = new ArrayAdapter<>(MapsActivity.this, android.R.layout.simple_list_item_1, arrayList);

    lv.setAdapter(adapter);

    lv.setVisibility(View.INVISIBLE);

所以最初当MapsActivity。java加载我不希望ListView立即显示。

    searchView.setOnSearchClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            lv.setVisibility(View.VISIBLE);

        }
    });

我想列表视图显示当搜索视图被点击打开和键盘弹出。

    searchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {

               lv.setVisibility(View.INVISIBLE);

            return false;
        }
    });

在上面的代码中,我希望listView关闭、消失、不可见,但事实并非如此。

顺便说一句,我指的是关闭searchView时动作栏中的“后退”按钮。

当searchView和键盘关闭时,我希望ListView也关闭,但由于某些原因,代码无法识别,ListView永远不会关闭。

如何关闭ListView?

共有2个答案

赵灼光
2023-03-14

根据Android引用,如果要覆盖清除文本字段并忽略它的默认行为,请尝试返回true,否则返回false。

请参阅此链接:https://developer.android.com/reference/android/widget/SearchView.OnCloseListener.html

  searchView.setOnCloseListener(new SearchView.OnCloseListener() {
    @Override
    public boolean onClose() {

           lv.setVisibility(View.INVISIBLE);

        return true;//Should work.
    }
});
牟黎昕
2023-03-14

您只需在活动中重写此方法即可:

@Override
public void onBackPressed() {
    if(lv.getVisibility()==View.VISIBLE){
      lv.setVisibility(View.INVISIBLE);
      return;
    }
    super.onBackPressed();
}

希望这有帮助。

 类似资料:
  • 我有一个Jframe窗口,里面有一个按钮。通过单击该按钮,它将打开一个新的JFrame窗口。但是当我关闭这个窗口时,它会自动用按钮关闭第一个Jframe窗口。当我关闭第二个Jframe窗口时,如何防止第一个Jframe窗口关闭?

  • 我正在安装我的应用程序,然后使用主活动保存数据,并转到另一个片段活动。下一次我启动我的应用程序时,总是预览第二个片段,然后按“返回”键返回主活动,但我不想返回主活动。我想按后退按钮关闭我的应用程序。我试试这个

  • 我有一个Jframe(美因茨), 它有一个按钮(showDialog), 当用户单击该按钮时, jdialog (Dialogz) 将显示, 那个jdialog有一个按钮 如何从该按钮关闭jdialog(在jdialog内部)? 我可以在创建对话框的实例后更改对话框的模式吗? 我需要阻止jdialog的所有者 我试着。。。 非常感谢你的任何帮助

  • 想改进这个问题吗 通过编辑此文章,添加详细信息并澄清问题。 当计数器小于3并且我等待单击按钮时,我想一直更改循环颜色。当循环是红色时,他需要按“停止”。这是程序: 非常感谢。

  • 我想在进入“活动”和用户搜索并按下searchview上的“X”后关闭键盘。我该怎么做?

  • 嗨,我有一个jFrame,我想问问用户,当单击close按钮时,他是否确定要关闭jFrame: 当他从jpanel弹出窗口中选择“否”按钮时,我该如何撤消关闭操作?