2017-08-08 8 views
0

​​はどのようにListViewコントロール

StudentInformation Javaクラス内の特定のデータベース子とディスプレイを取得します。

public class StudentInformation { 

    String name; 
    String ID; 
    String studentID; 
    String email; 
    String phone_num; 

    public StudentInformation() { 

    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getID() { 
     return ID; 
    } 

    public void setID(String ID) { 
     this.ID = ID; 
    } 

    public String getStudentID() { 
     return studentID; 
    } 

    public void setStudentID(String studentID) { 
     this.studentID = studentID; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getPhone_num() { 
     return phone_num; 
    } 

    public void setPhone_num(String phone_num) { 
     this.phone_num = phone_num; 
    } 
} 

私は方法の多くを試してみたが、ListViewコントロールは、まだ何も表示しないとアプリが突然停止しました。

public class StudentInfoActivity extends AppCompatActivity { 

    //add Firebase Database stuff 
    private FirebaseDatabase mFirebaseDatabase; 
    private FirebaseAuth mAuth; 
    private FirebaseAuth.AuthStateListener mAuthListener; 
    private DatabaseReference myRef; 
    private String userID; 

    ListView mListView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_student_info); 

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

     //declare the database reference object. This is what we use to access the database. 
     //NOTE: Unless you are signed in, this will not be useable. 
     mAuth = FirebaseAuth.getInstance(); 
     mFirebaseDatabase = FirebaseDatabase.getInstance(); 
     myRef = mFirebaseDatabase.getReference(); 
     FirebaseUser user = mAuth.getCurrentUser(); 
     userID = user.getUid(); 

     mAuthListener = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       FirebaseUser user = firebaseAuth.getCurrentUser(); 
       if (user != null) { 
        // User is signed in 
        toastMessage("User Information"); 
       } else {} 
       // ... 
      } 
     }; //end authlistener 

     myRef.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       // This method is called once with the initial value and again 
       // whenever data at this location is updated. 
       showData(dataSnapshot); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 
    } // end oncreate 

    private void showData(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()){ 
     StudentInformation sInfo = new StudentInformation(); 

      sInfo.setName(ds.child(userID).child("userInfo").getValue(StudentInformation.class).getName()); 
      sInfo.setID(ds.child(userID).child("userInfo").getValue(StudentInformation.class).getID()); 
      sInfo.setStudentID(ds.child(userID).child("userInfo").getValue(StudentInformation.class).getStudentID()); 
      sInfo.setEmail(ds.child(userID).child("userInfo").getValue(StudentInformation.class).getEmail()); 
      sInfo.setPhone_num(ds.child(userID).child("userInfo").getValue(StudentInformation.class).getPhone_num()); 

      ArrayList<String> array = new ArrayList<>(); 
      array.add(sInfo.getName()); 
      array.add(sInfo.getID()); 
      array.add(sInfo.getStudentID()); 
      array.add(sInfo.getEmail()); 
      array.add(sInfo.getPhone_num()); 
      ArrayAdapter adapter = new  ArrayAdapter(this,android.R.layout.simple_list_item_1,array); 
     mListView.setAdapter(adapter); 

     } 
    } //end showdata 

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

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

    private void toastMessage(String message){ 
     Toast.makeText(this,message,Toast.LENGTH_SHORT).show(); 
    } 
} // end class 

これはコードを使用しています。私はgetchildrenメソッドについて疑問に思っていましたが、私はコードで何か間違ったことをしましたか?誰もこれで私を助けることができますか?

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference userInfoRef = rootRef.child("users").child(userID).child("userInfo"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String ID = ds.child("ID").getValue(String.class); 
     String email = ds.child("email").getValue(String.class); 
     String name = ds.child("name").getValue(String.class); 
     String phone_num = ds.child("phone_num").getValue(String.class); 
     String studentID = ds.child("studentID").getValue(String.class); 
     Log.d("TAG", ID + "/" + email + "/" + name + "/" + phone_num + "/" + studentID); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
userInfoRef.addListenerForSingleValueEvent(eventListener); 

答えて

0

あなたはFirebaseListAdapter .Hereで行くことができますがある場合に更新されるすべての変更を管理したり、リスト内のリスナーとすべてのものを添付する必要はありません。データは次のコードを使用してください取得するために

0

サーバーの変更

関連する問題