2017-07-14 19 views
0

firebaseデータベースからデータを取得していないアプリケーション。アプリはうまく動作しますが、アプリ内に何も表示されず、空白になります。ここに私のコードですfirebaseデータベースから取得したデータが表示されない

public class profilemain extends AppCompatActivity { 

    private FirebaseAuth mAuth; 
    private FirebaseAuth.AuthStateListener mAuthListener; 

    private Firebase url; 

    private ListView listview; 
    ArrayList<String> arrayList=new ArrayList<>(); 
    ArrayAdapter<String> arrayAdapter; 

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

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

     Firebase.setAndroidContext(this); 
     url=new Firebase("https://-------.firebaseio.com/users"); 
     arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList); 
     listview.setAdapter(arrayAdapter); 
     url.addChildEventListener(new com.firebase.client.ChildEventListener() { 
      @Override 
      public void onChildAdded(com.firebase.client.DataSnapshot dataSnapshot, String s) { 
       String value=dataSnapshot.getValue(String.class); 
       arrayList.add(value); 
       arrayAdapter.notifyDataSetChanged(); 
      } 

      // .. Other Overriden functions 
     }); 

     mAuth=FirebaseAuth.getInstance(); 
     mAuthListener =new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       if (firebaseAuth.getCurrentUser()==null){ 
        startActivity(new Intent(profilemain.this,MainActivity.class)); 

       } 
      } 
     }; 
    } 

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

そして、私のXMLファイルは以下の通りです。アプリはうまく動作していますが、データを表示していません。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context="com.food.sheenishere.stark.profilemain"> 

    <FrameLayout 
     android:id="@+id/content" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <ListView 
      android:id="@+id/listview" 
      style="@style/Widget.AppCompat.ListView" 
      android:layout_width="wrap_content" 
      android:layout_height="337dp" /> 
    </FrameLayout> 

    <android.support.design.widget.BottomNavigationView 
     android:id="@+id/navigation" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:background="?android:attr/windowBackground" 
     app:menu="@menu/navigation" /> 

</LinearLayout> 

ここに、私のFirebaseデータベースのスキーマがあります。

enter image description here

+0

あなたの問題を非常に具体的にしてください。この質問は、デバッグのヘルプを求めています。 –

+0

データが取得されないことを特定しています –

+0

Firebaseでデータのダミースナップショットを追加してください。 Firebaseでデータの構造を確認する必要があります。 –

答えて

0

あなたはこの

public class Users { 
    List<String> users; 
} 

のようなクラスは今、このようなあなたのFirebaseデータベースからユーザーを取得する必要があります。

url.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot snapshot) { 
     Users userList = dataSnapshot.getValue(Users.class); 

     // Add all the users fetch in the ArrayList. 
     for (String user : userList.users) 
      arrayList.add(user); 

     arrayAdapter.notifyDataSetChanged(); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {   
    } 
}); 
+0

カスタムJavaクラスを使用すると便利ですが、必須ではありません。 –

+0

まだ動作していません... –

0

デフォルトのセキュリティルールを使用すると、リスナーを添付するときはを認証していることを必要としながら、あなたはおそらく、サインインしていません。クイックフィックス:

mAuth=FirebaseAuth.getInstance(); 
    mAuthListener =new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      if (firebaseAuth.getCurrentUser()==null){ 

       startActivity(new Intent(profilemain.this,MainActivity.class)); 

       arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList); 
       listview.setAdapter(arrayAdapter); 
       url.addChildEventListener(new com.firebase.client.ChildEventListener() { 
        @Override 
        public void onChildAdded(com.firebase.client.DataSnapshot dataSnapshot, String s) { 
         String value=dataSnapshot.getValue(String.class); 
         arrayList.add(value); 
         arrayAdapter.notifyDataSetChanged(); 
        } 

        // .. Other Overriden functions 
       }); 
      } 
     } 
    }; 

ただし、ここで間違っている可能性のあるものが多すぎます。 1つ目は、Firebaseの古いバージョンです。私はthe latest documentationとこのcodelabと新鮮な開始をお勧めします。

+0

私はすでにサイン入りです –

+0

私はサインインしていますが、データを取得したいだけですが、アプリケーションは実行されていますが、 –

関連する問題