2017-03-14 2 views
0

나는 Firebase 및 Android 학습을 시작합니다. 검색 뷰 표시 데이터를리스트 뷰에 생성하고 Firebase의 데이터를 필터링하고 싶습니다 (예를 들어 Instagram 검색 섹션). 나는 몇 가지 문서와 다른 질문을 읽었지 만 여전히 어떻게 시작하고 시작하는지 이해하지 못합니다. . 누구든지 조언을 해줄 수 있습니까? 내가 무엇을해야 하나? 어디에서 시작해야합니까? Firebaseui를 사용해야합니까? 내가 볼 수있는 모범이 있습니까?Firebase Android Searchview

+0

예 u는 어댑터에() 함수를 필터를 추가 한 후 목록에서 특정 클래스에 대한 데이터를로드 할 수 있습니다.! 검색보기 메서드에서 호출하십시오. –

+0

예가 있습니까? – kings077712

답변

0

귀하의 코드 쇼는 다음 단계를 수행

  1. 배열 또는 목록에서 데이터베이스 및 저장소에서 데이터를 검색합니다.
  2. Filterable을 구현하는 목록에 사용자 지정 목록 어댑터를 설정합니다.
  3. 트리거 검색 창 아래

의 사용자 유형이 활동에 필터를 사용자의 목록을 검색하고 설정하는 예입니다 필터 :

  private List<User> usersList; 
      private MyListAdapter adapter; 
      private Listview listview; 
      private DatabaseReference mDatabase; 


       mDatabase = FirebaseDatabase.getInstance().getReference(); 

       mDatabase.child("users").addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
         usersList = new ArrayList<>(); 
         for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) { 
           usersList.add(eventSnapshot.getValue(User.class); 
          } 

          adapter = new MyListAdapter(context, usersList); 
          listview = (Listview) findViewById(R.id.mylistview); 
          listview.setAdapter(adapter); 

         } 
        @Override 
        public void onCancelled(DatabaseError databaseError) { 
         } 
        }); 

    searchButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        FilterNow(); 
       } 
      }); 
     } 

private void FilterNow() { 
    String text = editText.getText().toString().toLowerCase().trim(); 
    if (TextUtils.isEmpty(editText.getText())){ 
     Toast.makeText(getContext(),"searchbox is empty!", Toast.LENGTH_SHORT).show(); 
     }else { 
     adapter.getFilter().filter(text); 
     friends.setAdapter(adapter); 
     } 
    } 

다음 당신이 보일 것이 필터를 구현하는 목록 어댑터를 만드는 방법 행운을 빈다!

0

"firebaseUserSearch" 새로운 방법을 생성하여 RecyclerView 어댑터를 복사하고 안에 붙여 넣으십시오. 그것을 필터링하기 위해 databaseReference를 사용하십시오.

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

그리고 코드는 여기에 있습니다 : :

내 FB 구조는

.... 

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

    .... 
관련 문제