Androidファイアベースプロジェクトをリファクタリングする、データをデータベースに挿入するコードを移動する、MainActivityからMessageDaoクラスにUIを表示するためのコードを作成しようとしています。コードリファクタリング後にUIに表示されない
これは私のMessageDaoクラスです:
public class MessageDao {
private FirebaseDatabase mFirebaseDatabase = FirebaseDatabase.getInstance();
private DatabaseReference mMessagesDatabaseRef = mFirebaseDatabase.getReference().child("messages");;
private List<Message> messages = new ArrayList<>();
private MessageAdapter mMessageAdapter = new MessageAdapter(messages);
public void write(Message message){
mMessagesDatabaseRef.push().setValue(message);
}
public void updateList(){
mMessagesDatabaseRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
messages.add(dataSnapshot.getValue(Message.class));
mMessageAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Message msg = dataSnapshot.getValue(Message.class);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
そしてMainActivityクラス:私はmSendButton
ボタンをクリックすると
public class MainActivity extends AppCompatActivity {
.....
private MessageDao mesageDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSendButton = (Button) findViewById(R.id.sendButton);
mesageDao = new MessageDao();
.....
// Send button sends a message and clears the EditText
mSendButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Message message = new Message(mMessageEditText.getText().toString(), mUsername, null);
mesageDao.write(message);
mMessageEditText.setText("");
}
});
mesageDao.updateList();
}
}
、それがデータベースに書き込むが、それは私のUIに表示されていません。 childEventListener
がMainActivity
にあるときはすべて正常に動作しますが、MessageDao
に移動してというMainActivity onCreate
メソッドで呼び出すと機能しません。では、私はここで何が欠けていますか?この問題を解決するには
どのように活動中のmMessageAdapterを取得していますか? –