> Java > java지도 시간 > ListView에 Firebase 사용자 ID와 점수를 효율적으로 표시하는 방법은 무엇입니까?

ListView에 Firebase 사용자 ID와 점수를 효율적으로 표시하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-01 12:10:12
원래의
606명이 탐색했습니다.

How to Efficiently Display Firebase User IDs and Scores in a ListView?

점수 속성을 사용하여 ListView에 Firebase 데이터 표시

Firebase 데이터의 사용자 ID와 점수를 모두 ListView에 표시하려고 하면 점수 값은 처음에는 사용 불가능할 수 있습니다. 다음은 이 문제를 해결하고 두 속성을 효과적으로 표시하기 위한 포괄적인 가이드입니다.

Firebase API의 비동기 특성

Firebase에서 데이터를 검색하는 데 사용되는 onDataChange() 메서드는 비동기식입니다. , Score 개체가 목록에 추가되기 전에 호출될 수 있음을 의미합니다. 이 문제를 해결하려면 onDataChange() 메서드 내에서 목록을 선언하거나 비동기 동작을 효과적으로 처리하는 기술을 사용하세요.

데이터 구조 및 유형

Score 클래스가 다음을 따르는지 확인하세요. 데이터 멤버에 대한 Java 명명 규칙. 또한 다음과 같이 수정하세요.

public class Score {
    private String userId;
    private String score;

    // ... [other class methods]
}
로그인 후 복사

문자열을 사용한 데이터 검색 및 표시

문자열 클래스를 사용하여 데이터를 표시하려면 아래 코드 조각을 활용하세요.

ListView listView = (ListView) findViewById(R.id.list_view);
List<String> list = new ArrayList<>(); // Declare list within onDataChange() method
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, list);
listView.setAdapter(arrayAdapter);
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference scoreRef = rootRef.child("score");
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String userId = ds.child("userId").getValue(String.class);
            String score = ds.child("score").getValue(String.class);
            list.add(userId + " / " + score);
        }
        arrayAdapter.notifyDataSetChanged();
    }

    // ... [onCancelled() method]
};
scoreRef.addListenerForSingleValueEvent(eventListener);
로그인 후 복사

점수를 이용한 데이터 검색 및 표시 클래스

Score 클래스를 사용하여 데이터를 검색하고 표시하려면 다음 코드 조각을 사용하세요.

ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Score score = ds.getValue(Score.class);
            String userId = score.getUserId();
            String score = score.getScore();
            list.add(userId + " / " + score);
        }
        arrayAdapter.notifyDataSetChanged();
    }

    // ... [onCancelled() method]
};
scoreRef.addListenerForSingleValueEvent(eventListener);
로그인 후 복사

위 내용은 ListView에 Firebase 사용자 ID와 점수를 효율적으로 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿