Firebase数据检索返回空屏幕

时间:2017-02-24 09:32:01

标签: android firebase firebase-realtime-database

我正在尝试从firebase检索数据到listview ...但是这段代码返回一个空白屏幕。我的数据库有3个子节点,每个子节点都有数据字段。

我看到的只是一个空屏幕。

我不知道如何解决这个问题:代码在这里

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);
        }

    }
}

1 个答案:

答案 0 :(得分: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