빡빡종
415
2019-01-16 23:07:04 작성 2019-01-16 23:08:03 수정됨
2
627

[안드로이드] Firebase 데이터 처리 질문 (고수분들 도움이 절실합니다 ㅠㅠ)


Firebase 실시간 데이터베이스를 이용하고 있는 중인데,


하위 노드에서 검색한 자료를 바탕으로 다시 검색을 하려고 하려면 어떻게 해야할까요?



예를 들어 데이터구조가 위 그림과 같을때 제가 모든 유저의 count 데이터를 찾을때

int i = 0;      
  conditionRef = mRootRef.child("user/"+PersonalKEY+"/data/count);
        conditionRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot fileSnapshot : dataSnapshot.getChildren()) {
                   Log.d("COUNT 값 "+ i +"번째", fileSnapshot.getValue(Integer.class));
                 i++;
                }
              
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });


이런식으로 찾습니다.


그런데 지금 제가 막힌부분이 저 Count의 값중에서 상위 3개의 옆자리 노드들의 값도 출력하고 싶은겁니다


5210, 910, 810이 상위 3개의 값이니까 이 3개의 노드가 해당하는 부분에서


id값 nickname값을 가져와서 리스트뷰에 뿌려주고 싶은데 가져오는 방법을 모르겠습니다 ㅠㅠ

ex)

109562   dqd    5210

120433   Tree    910

100239   Apple  810



count값 뽑아서 어레이리스트에 담고 내림차순으로 정렬까지하고 막힌상태입니다 ㅠㅠ


정말 고수님들 도와주세요 ㅜㅜ

0
0
  • 답변 2

  • UnknownDontknow
    328
    2019-01-17 00:36:53

    사용해본지가 좀 오래되서 기억이 잘안나지만 정렬메소드가 따로 있어서 아래와 같이 해보시겠어요.

    orderByChild는 해당 자식노드의 값에따라 오름차순 정렬이구

    limitToFirst(3)는 정렬된 값들을 최상위값부터 3개로 제한해서 가져오는 메소드에요.

    정확한 형태인지는 실험을안해봐서 확실치는않으니 혹시 다르게 뽑히면 가이드 문서에 해당메소드 내용

    읽어보시구 해보시면 될거에요.

      conditionRef = mRootRef.child("user").orderByChild("data/count").limitToFirst(3);
            conditionRef
    .addValueEventListener(new ValueEventListener() {
                @Override
               
    public void onDataChange(DataSnapshot dataSnapshot) {
                   
    for (DataSnapshot fileSnapshot : dataSnapshot.getChildren()) {
                       Model model = fileSnapshot.getValut(Model.class);

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

    0
  • 김백수
    979
    2019-01-17 08:06:13

    그런식으로 데이터 가져오는건 안됩니다

    전체다 count정렬순으로 데이터를 받아와서 1, 2, 3위는 다 보여주고 나머지는 카운트만 보여주도록 해야합니다


    아니면  전체 count만 읽어오는 리스너 + 1, 2, 3위 데이터 읽어오는 리스너 붙어야 하는데 

    그냥 전체 데이터 읽어오는게 나아보이네요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.