1

Firebaseを使用して最初のAndroidアプリケーションを開発しています。それは全体的に私の最初のアンドロイドアプリでもあるので、私は期限切れになっていませんが、JavaやPHPなどのプログラミングラングウォークではすでにいくつかの期限があります。私は自分のコード構成にいくつかの問題がありますので、専門的なアドバイスを探しています。私はすでにいくつかの研究をしましたが、これに対して良い解決策を見つけることができませんでした。AndroidのFirebaseコードの構成(コンセプト)

私のアプリはFirebase認証とFirebaseリアルタイムデータベースを使用しています。

私は問題に関連するすべての部分について説明します。


主な活動...

  • チェックし、ユーザーがログインしている場合、いない場合は、認証活動を開始
  • がデータベースに責任があるオブジェクトDatabaseHandlerを含みますこのオブジェクトには、UserInfoオブジェクトがインスタンス化される必要があります
  • FirebaseAuthオブジェクトが含まれていますAuthStateListener
  • それは
  • DatabaseHandler

から取得いくつかのデータを表示することができなければならない現在のユーザとDatabaseHandlerオブジェクトを再インスタンス化する場合は、ユーザーは、ログインしている場合、このAuthStateListenerチェック私はすでにのonCreate()方法でDatabaseHandlerオブジェクトへのアクセスを持っている必要があります私の問題

2882​​いくつかのデータを表示するために、しかしDatabaseHandler以来onCreate()onAuthStateChanged()


私の考えの前に呼び出されるため、ユーザーがログインし、これは動作しません既に存在であることを確認するために、方法onAuthStateChanged()でインスタンス化されます

私はこの問題を解決する方法は完全にはわかりませんが、私の主なアクティビティは自分のデータを表示するのではなく、どのアクティビティを呼び出すかチェックする方法でプロジェクトを再構築することでした。私はまだプロジェクトの初期段階にあるので、これは大きな問題ではありません。 これがうまくいくか、もっと良い解決策があるかどうかを知りたい。

あなたは本のリストを表示したいと仮定したコードと活動の例として、私はここにあなたが何を考えて

+0

は、私の知る限り理解し、あなたがいない覚えているonCreateもののすべてを経由せずにリストを再移入することができますpopulateList、からそれを表示します**あなたのデータを取得し、 'onCreate'で表示する**を持っています。アクティビティーの別のカスタム・メソッドからUIを更新することができます。このメソッドでUI要素を '見つける'か、アクティビティクラスのフィールドとして宣言し、 'onCreate'でそれらを見つけ出す必要があります。私が望むなら、私が意味するものの例を掲示することができます。 – Barthy

+0

私はアンドロイドの概念に精通していないと述べた。私はrecylcerビューを使用しています。チュートリアルのコードを入手しました。このチュートリアルでは、onCreate()メソッドでrecylcerviewの内容を宣言する必要があります。 –

答えて

0

を知ってみましょう:あなたは、次ん。これにより

public class MainActivity extends AppCompatActivity { 
    private List<Book> bookList = new ArrayList<>(); 
    private RecyclerView recyclerView; 
    private BookAdapter adapter; 

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

     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     adapter = new BookAdapter(bookList); 

     RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
     recyclerView.setLayoutManager(mLayoutManager); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 
     recyclerView.setAdapter(mAdapter); 

     FirebaseAuth auth = FirebaseAuth.getInstance(); 
     FirebaseUser user = auth.getCurrentUser(); 
     if (user != null) { 
      // User is still logged in 
      // Get UserInfo and instantiate DatabaseHandler 
      populateList(); 
     } else { 
      // No user is logged in, go to auth activity 
     } 
    } 

    private void populateList() { 
     // Get Books from Firebase and add them to the adapter 
     Book book = new Book(); 
     bookList.add(book); 

     // Notify the adapter, so that it updates the UI 
     adapter.notifyDataSetChanged(); 
    } 
} 

  • すべてのオブジェクトを作成してインスタンス化するonCreate
  • onCreateを確認し、 ingly
  • は、データを取得し、(clearにリスト/アダプタを
+0

これは有望です。私は私のPCに戻ってきたときこれを詳しく見直します。 –

+0

@IanFakoちょっとイアン、これと何か進歩?私の答えはあなたを助けましたか? – Barthy

関連する問題