2017-12-04 17 views
1

searchView 아이콘이있는 actionBar가 있습니다. searchView 아이콘을 클릭하면 softInputMode 키보드가 나타나고 검색을 위해 ListView가 나타납니다. 그러나 searchView를 닫을 때 searchView가 닫히지 만 searchView가 닫힐 때 ListView도 닫을 수 없습니다.안드로이드, 닫는 방법 "뒤로"버튼을 눌러 searchView를 닫을 때 ListView

여기 activity_maps.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" 
    /> 

MapsActivity.java 그래서 처음 MapsActivity.java로드 내가 ListView를 바로 보여주고 싶지 않을 때

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); 

에서 ListView에 대한 내 코드입니다.

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


      lv.setVisibility(View.VISIBLE); 

     } 
    }); 

searchView를 열었을 때 키보드가 튀어 나오면 listView를 표시하려고합니다.

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

       lv.setVisibility(View.INVISIBLE); 

      return false; 
     } 
    }); 

위의 코드에서 listView를 닫고, 사라지게하고, 보이지 않게하고 싶지만 그렇지 않습니다.

btw searchView를 닫을 때 제공되는 actionBar의 "뒤로"버튼을 참조하고 있습니다.

searchView와 키보드가 닫히면 ListView도 닫으려고하지만 어떤 이유로 코드가 인식되지 않고 listView가 닫히지 않게해야합니다.

어떻게 ListView를 닫을 수 있습니까?

+0

onClose 함수가 false를 반환합니까? – phantom

+0

거짓, 사실, 나는 둘 다, 동일한 결과를 시도했다. – iBEK

+0

확인하셨습니까? https://stackoverflow.com/questions/9327826/searchviews-oncloselistener-doesnt-work/12975254#12975254 – phantom

답변

0

안드로이드 참조에 따르면, 텍스트 필드를 지우고 해제하는 기본 동작을 재정의하려면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

은이 링크를 참조하십시오 : 당신이 간단하게 할 당신의 활동이 방법 오버라이드 (override)입니다 수있는 일 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. 
    } 
}); 
+0

이것은 작동하지 않습니다. – iBEK

1

:이 도움이

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

희망을.

+0

Android Back 버튼을 누르면 작동합니다. 그러나 searchView를 클릭하고 menu_main.xml에서 app : showAsAction = "ifRoom | collapseActionView"와 함께 제공되는 뒤로 버튼을 클릭하면 searchView가 닫힐 때 listView가 닫힙니다. – iBEK

+0

안드로이드의 뒤로 버튼 대신에 searchView의 뒤로 버튼으로 listView를 닫을 수있는 코드를 알고 있습니까? 현재 searchView의 뒤로 버튼은 searchView를 닫습니다. 그러나 listView를 동시에 닫으려고합니다. – iBEK