2017-02-28 13 views
4

Fireviewデータベースのデータが格納されたリストビューのフラグメントにAndroid Searchview関数を実装したいとします。 Firebaseデータを取得するためにFirebaseデータのAndroid Searchview

コード

mPOIAdapter = new FirebaseListAdapter<Poi>(
      getActivity(), 
      Poi.class, 
      R.layout.item_layout_poi, 
      FirebaseDatabase.getInstance().getReference("poi").orderByChild("name")) { 
     @Override 
     protected void populateView(View v, Poi model, int position) { 
      TextView pointsText = (TextView) v.findViewById(R.id.poi_textview); 
      pointsText.setText(model.getName()); 
      TextView pointDescr = (TextView) v.findViewById(R.id.poi_building); 
      pointDescr.setText(model.getDescription()); 
     } 
    }; 

    mPOIListView.setAdapter(mPOIAdapter); 

Searchviewコード:

私は、ユーザーの入力に基づいてリストビュー項目をフィルタリングするために、このようなコードを使用したい
@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 

    inflater.inflate(R.menu.options_menu,menu); 
    MenuItem item = menu.findItem(R.id.search); 
    item.setVisible(true); 
    SearchView searchView = (SearchView) item.getActionView(); 

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String s) { 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String s) { 
      return false; 
     } 
    }); 
} 

searchView.setOnQueryTextListener(new OnQueryTextListener() { 

    @Override 
    public boolean onQueryTextSubmit(String s) { 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String s) { 
     getListAdapter().getFilter().filter(s); 
     return true; 
    } 
}); 

FirebaseListAdapterはListAdapterと同じ可能性がないため、i ca Firebaseデータ

+0

HIIブレント、私は同じ問題を持っています。何か解決策を見つけましたか?はいの場合はここであなたの答えを更新してください。前もって感謝します。 –

答えて

0

移入リストビューフラグメントに検索機能を使用するための別の方法は、あなただけの新しいメソッドを作成する任意の配列では必要ありませんあるのコピーを「firebaseUserSearchを」getListAdapter().getFilter().filter(s)

を使用しませんRecyclerViewアダプタを挿入して内部に貼り付けます。フィルタリングするにはdatabaseReferenceを使用します。

私のFBの構造は次のとおりです。

BLABLA: 
    Bars: 
     01: 
      BarName: "Best bar" 
     02: 
      BarName: "The Worst bar" 

そして、コードはここにある:

.... 

    databaseReference = FirebaseDatabase.getInstance().getReference ("Bars"); 

    ..... 


    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String searchText) { 

      // TODO Auto-generated method stub 

      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String searchText) { 

      searchText = searchView.getQuery().toString(); 

      firebaseUserSearch (searchText); 

      return true; 
     } 
    }); 
    return true; 
} 



private void firebaseUserSearch (final String searchText) { 


    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter <Bar, ViewHolder>(

      Bar.class, 
      R.layout.custom_row, 
      ViewHolder.class, 
     databaseReference.orderByChild("barName").startAt(searchText.toUpperCase()).endAt(searchText + "\uf8ff")) 
    { 
     @Override 
     protected void populateViewHolder(ViewHolder viewHolder, Bar model, final int position) { 

    .... 
関連する問題