2017-08-09 9 views
0

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に表示されていません。 childEventListenerMainActivityにあるときはすべて正常に動作しますが、MessageDaoに移動してというMainActivity onCreateメソッドで呼び出すと機能しません。では、私はここで何が欠けていますか?この問題を解決するには

+0

どのように活動中のmMessageAdapterを取得していますか? –

答えて

0

、あなたがコードを移動したあなたのMessageDaoクラスは、このようなアプリケーションを拡張する必要があります:

public class MessageDao extends Application {...} 

はそれがお役に立てば幸いです。

+0

残念ながら... – Nemus

関連する問題