2017-11-05 6 views
0

AndroidスタジオでFirebase DBのデータを並べ替えて、リアルタイムで適用しようとしています。私のDB上で手動で変更を加えると、私のコードはすぐにビューを更新しますが、コードを使用して名前でソートできるかどうかは疑問です。私はorderByChildがそれを行う関数だと思ったが、データベースを変更しない。 firebaseとディスプレイからデータをフェッチFirebaseのデータをソートし、Android StudioのリアルタイムDBに適用できますか?

機能:名前

sortByNameRadio.setOnClickListener(
      new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        repoReference.child("subchild").orderByChild("name"); 
        adapter.notifyDataSetChanged(); 
       } 
      } 
    ); 

答えて

0

によってソートするための

private void fetchRepoData(String profileUserID) { 

    profileUserDatabase = repoReference.child(profileUserID); 

    //DatabaseReference reposReference = profileUserDatabase.child("Repos"); 

    profileUserDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      repoListItems.clear(); 
      repoNameList.clear(); 
      userNameList.clear(); 
      descriptionList.clear(); 

      Toast.makeText(getActivity(), "changed", Toast.LENGTH_SHORT).show(); 
      for(DataSnapshot snapshot : dataSnapshot.getChildren()) { 

       repoNameList.add(snapshot.getValue(RepoInfo.class).getRepoName()); 
       userNameList.add(snapshot.getValue(RepoInfo.class).getOwner()); 
       descriptionList.add(snapshot.getValue(RepoInfo.class).getDescription()); 
      } 

      for(int i = 0; i < repoNameList.size(); i++) { 
       repoListItems.add(new RepositoryItem(i, repoNameList.get(i), userNameList.get(i), descriptionList.get(i))); 
      } 
      adapter.notifyDataSetChanged(); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

} 

ラジオボタンあなたはそれが新しいQueryオブジェクトを返すorderByChild()を呼び出します。参照を保存し、リスナーを添付して、というクエリオブジェクトを追加する必要があります。

profileUserDatabase = repoReference.child(profileUserID); 

Query query = repoReference.child("subchild").orderByChild("name"); 

query.addValueEventListener(new ValueEventListener() { 
    for(DataSnapshot snapshot: dataSnapshot.getChildren()) { 
     System.out.println(snapshot.getKey()); 
     ... 
+0

query.addValueEventListener内に何かする必要がありますか? – Dawn17

+0

子ノードのキーを表示する行を追加しました。それ以外に、他に何が必要なのか言うのは難しいです。 –

関連する問題