2017-02-24 1 views
0

firebaseからリストビューにデータを取得しようとしていますが、このコードでは空の画面が返されます.Myデータベースにはそれぞれ3つの子フィールドがあります。Firebaseのデータ検索で空の画面が返される

すべて私は空の画面です。

私はこの人をしてください解決する方法については考えている:全体のページでは、コンテンツビューを設定するときに、あなたのビューのいずれかであれば、これが起こっている可能性があります空白の場合、コードはここに

public class Business extends AppCompatActivity { 
    private ListView business; 

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

    public ArrayList<String> arr; 
    public ArrayAdapter adapter; 

    @Override 
    protected void onStart() { 
     super.onStart(); 

     DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference(); 
     arr = new ArrayList<>(); 

     ValueEventListener listener = new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       map2list((Map) dataSnapshot.getValue()); 
       //formats the datasnapshot entries to strings 
       adapter.notifyDataSetChanged(); 
       //makes the ListView realtime 
      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 

      } 


      public void onCancelled(DatabaseError databaseError) { 
       // Getting Post failed, log a message 
       System.out.println(databaseError.toException()); 
       // ... 
      } 
     }; 
     mDatabase.addValueEventListener((com.google.firebase.database.ValueEventListener) listener); 

     adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, android.R.id.text1, arr); 

     ListView listView = (ListView) findViewById(R.id.business); 
     listView.setAdapter(adapter); 


    } 

    public void map2list(Map<String,Long> map){ 

     arr.clear(); 
     for (Map.Entry<String, Long> entry : map.entrySet()) { 

      Long key = Long.parseLong(entry.getKey()); 
      String d = DateFormat.getDateTimeInstance().format(key); 
      Long value = entry.getValue(); 
      arr.add(d + ": " + value); 
     } 

    } 
} 
+0

これを解決する方法がわからないのですか?あなたは本質的に、あなたの代わりにこれをデバッグするように他の人に頼んだのですあなたはパーツを隔離し、どちらが希望の結果を生み出していないかを見て答えを見つけることができるようです:a)あなたはFirebaseを写真から取り除くとうまくいくのですか? b)あなたが画像からUIを取り除くとうまくいくのですか? c)あなたは直接そのURLを照会して結果を得ることができますか?各ステップで結果を記録して、コードの実行がどこで停止しているかを確認できますか? 'FirebaseDatabase.getInstance()。setLogLevel(Logger.Level.DEBUG);を使ってデバッグログを有効にすることも考えてください。 – Kato

答えて

0

ですあなたのレイアウトには、「マッチする親」のlayout_height属性があります。これはあなたが何も見ていない理由の一つかもしれません。あなたが何かを見ないかもしれない別の理由は、リスナーが別々のスレッドで動作することです。このようにコードを並べ替えてみてください。

adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, android.R.id.text1, arr); 

    ListView listView = (ListView) findViewById(R.id.business); 
    listView.setAdapter(adapter); 

mDatabase.addValueEventListener((com.google.firebase.database.ValueEventListener) listener); 
// add the listner after setting the adapter 
関連する問題