Отображение отдельных данных для профиля с помощью ValueEventListener - PullRequest
0 голосов
/ 28 октября 2018

Я использовал адаптер и часть Firebase для извлечения данных, используя listView и simple_list_item_1 для отображения данных

, поэтому я прилагаю базу FireBase для справки: firebase architecture

и вот мой класс ViewDetails

public class viewMyDetails  extends AppCompatActivity {

public static  final String TAG = "viewMyDetails";

private FirebaseDatabase mFirebaseDb;
private FirebaseAuth mFireAuth;
private FirebaseAuth.AuthStateListener mAuthListener;

private DatabaseReference dbRef;
private String userId;
private ListView mListView;
@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.profile_distinct_activity);

    //getting instances
    mFireAuth =  FirebaseAuth.getInstance();
    mFirebaseDb = FirebaseDatabase.getInstance();

    dbRef = mFirebaseDb.getReference();
    FirebaseUser user = mFireAuth.getCurrentUser();
    userId = user.getUid();

    mListView = (ListView)findViewById(R.id.listView);

    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = mFireAuth.getCurrentUser();
                if(user != null){
                    toastFunc("successfully signed as"+ user.getEmail());
                }
                else{
                    toastFunc("successfully signed out!");
                }
        }
    };

    dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            showData(dataSnapshot);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

private void showData(DataSnapshot dataSnapshot){

    for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
        storeStudentDetails sd = new storeStudentDetails();
        sd.setStudentName(dataSnapshot1.child(userId).getValue(storeStudentDetails.class).getStudentName());
        sd.setEmail(dataSnapshot1.child(userId).getValue(storeStudentDetails.class).getEmail());
        sd.setBook(dataSnapshot1.child(userId).getValue(storeStudentDetails.class).getBook());
        sd.setFine(dataSnapshot1.child(userId).getValue(storeStudentDetails.class).getFine());
        sd.setDept(dataSnapshot1.child(userId).getValue(storeStudentDetails.class).getDept());
        sd.setRollNo(dataSnapshot1.child(userId).getValue(storeStudentDetails.class).getRollNo());

        Log.d(TAG,"show data : name" +sd.getStudentName());
        Log.d(TAG,"show data: rollNum" + sd.getRollNo());

        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add(sd.getStudentName());
        arrayList.add(sd.getRollNo());
        arrayList.add(String.valueOf(sd.getFine()));
        arrayList.add(sd.getDept());
        arrayList.add(String.valueOf(sd.getFine()));
        arrayList.add(sd.getBook());

        ArrayAdapter mAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,arrayList);
        mListView.setAdapter(mAdapter);

    }
}
@Override
public void onStart(){
    super.onStart();
    mFireAuth.addAuthStateListener(mAuthListener);
}

@Override
public void onStop() {
    super.onStop();
    if (mAuthListener != null) {
        mFireAuth.removeAuthStateListener(mAuthListener);
    }
}


private void toastFunc(String message){
    Toast.makeText(this,message,Toast.LENGTH_SHORT).show();
}

}

, но он зарегистрирован, как и ожидалось, но данные не получены!valueEventListener не работает хорошо, я так думаю!Рад получить предложения

github ссылка: https://github.com/THIYAGU22/DuesettlementDetails спасибо!

1 Ответ

0 голосов
/ 29 октября 2018

valueEventListener не работает хорошо

Он не работает вообще, потому что вы пытаетесь использовать прослушиватель, который находится отдельно от базы данных Firebase SDK в реальном времени, а не из Cloud Firestore, который являетсясовершенно другой продукт.Если вы хотите отобразить данные из базы данных Cloud Firestore в ListView, используя ArrayAdapter, см. Мой ответ из этой записи (пожалуйста, игнорируйте случайную часть элемента), гдеЯ объяснил, как вы можете это сделать.

...