2017-04-24 13 views
1

조각에 searchView 함수를 구현하려고합니다. searchView는 사용자 정의 작업 표시 줄에 있지만 사용 된 코드이지만 작동하지 않습니다. searchview를 조각 레이아웃으로 옮기면 작동하지만 바에서 작동하지 않습니다. SearchView가 조각에서 작동하지 않습니다.

public class TabActivity_adbya extends Fragment implements View.OnTouchListener,AdapterView.OnItemClickListener { 


    GridView gridView; 
    FirebaseDatabase firebaseDatabaseInstance; 
    private DatabaseReference booksInstance; 
    SearchView sv; 

    AlbumDBHandler db; 
    ArrayList<mokdmatData> books = new ArrayList<>(); 
    maKotabAdapter adapter; 


    @Override 
    public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstancestate) { 

     final View rootView = inflater.inflate(R.layout.activity_tab_adbya,container,false); 

     ((makalat2) getActivity()).getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
     ((makalat2) getActivity()).getSupportActionBar().setCustomView(R.layout.abs_layout); 
     ((makalat2) getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(true); 
     TextView textViewTitle = (TextView) getActivity().findViewById(R.id.mytext); 
     textViewTitle.setText("Articles"); 


     sv = (SearchView) getActivity().findViewById(R.id.svZelal); 
     sv.setQueryHint("Search..."); 

     sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

      @Override 
      public boolean onQueryTextSubmit(String query) { 
       return false; 
      } 
      @Override 
      public boolean onQueryTextChange(String query) { 
       adapter.getFilter().filter(query); 
       return true; 
      } 
     }); 


     gridView = (GridView) rootView.findViewById(R.id.gridView_adbya); 
     gridView.setOnItemClickListener(this); 

     db = new AlbumDBHandler(getActivity()); 
     getData(); 
     init(); 

     return rootView; 
    } 

내가

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" 
     android:weightSum="3" 
     > 
     <ImageView 
      android:layout_width="0dp" 
      android:layout_height="22dp" 
      android:src="@drawable/homebutton" 
      android:layout_gravity="center" 
      android:layout_weight="0.40" 
      android:id="@+id/homeButton" 
      /> 
     <Space 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="0.60" 
      /> 
    <com.mediamer.metwally.saidkotb.helpers.CustomTextView 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:textColor="@color/TextColor" 
     android:id="@+id/mytext" 
     android:textSize="25sp" 
     android:layout_weight="1" 
     /> 
     <Space 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="0.60" 
      /> 

      <android.support.v7.widget.SearchView 
      android:id="@+id/svZelal" 
      android:layout_width="0dp" 
      android:searchIcon="@android:drawable/ic_menu_search" 
      android:layout_height="match_parent" 
      android:layout_weight="0.40" 
      /> 
    </LinearLayout> 

</LinearLayout> 
+0

'svZelal' (SearchView)에 사용중인 메뉴 파일을 볼 수 있습니까? – pRaNaY

+1

난 조각에서 다시 기능을 선언해야한다고 생각해 .setHasMenuOptions (true) 및 onCreateOptions을 구현하고 처리 방법을 클릭하십시오. –

답변

0

처럼 조각에 사용할 생각입니다 searchView를 메뉴 항목으로 사용하는 경우 아래 코드를 사용하여 조각을 추가해야합니다.

private MenuItem mSearchItem; 
private SearchView sv; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

setHasOptionsMenu(true); 
}  


@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.menu_search, menu); // Put your search menu in "menu_search" menu file. 
    mSearchItem = menu.findItem(R.id.svZelal); 
    sv = (SearchView) MenuItemCompat.getActionView(mSearchItem); 
    sv.setIconified(true); 

    SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); 
    sv.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName())); 
    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      mSearchView.clearFocus(); 
      return true; 
     } 

     @Override 
     public boolean onQueryTextChange(String query) { 
      adapter.getFilter().filter(query); 
      return true; 
     } 
    }); 
super.onCreateOptionsMenu(menu, inflater); 
} 

나는 그것이 당신을 돕기를 바랍니다.

+0

이 예제에서 mSearchView는 무엇입니까? –

+0

코드 오타입니다. 방금 내 대답을 업데이트했습니다. – pRaNaY

+0

예 확인해주세요. 감사합니다. 감사합니다. –

0

을 사용하고있는 사용자 지정 작업 표시 줄 당신이 MainActivity에서 SearchView를 결합하고 public static SearchView searchView;를 선언 한 다음 사용할 필요가 MainActivity.searchView.setQueryHint("hint");

+0

검색보기가 작업 표시 줄에 있습니다. –