2017-02-24 1 views
0

firebase에서 데이터를 listview로 검색하려고합니다. 그러나이 코드는 빈 화면을 반환합니다. 내 데이터베이스에는 각각 데이터 필드가 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 
관련 문제