【问题标题】:Android Firebase population to listviewAndroid Firebase 填充到列表视图
【发布时间】:2016-11-20 00:22:47
【问题描述】:

需要帮助将 Firebase 信息填充到 ListView。我需要从“商店”中获得所有孩子,但不能。谁知道怎么解决请帮忙。虽然打印消息它给了我正确的数组,但我无法将它实现到 ListView。

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dealer_list_view);

    mListView = (ListView) findViewById(R.id.dealer_listView);

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference();

    ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            DataSnapshot friendsSnapshot = dataSnapshot.child("Shops");
            for (DataSnapshot friendSnapshot : friendsSnapshot.getChildren()) {


                String message = friendSnapshot.child("Dealer").getValue(String.class);
                System.out.println(message);

                DatabaseReference ref = FirebaseDatabase.getInstance().getReferenceFromUrl("My URl"+message);

                FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(DealerListView.this,
                        String.class,
                        android.R.layout.simple_list_item_1,
                        ref) {

                    @Override
                    protected void populateView(View v, String s, int i) {

     TextView textView = (TextView) v.findViewById(android.R.id.text1);
                        textView.setText(s);
                   }
                };
                mListView.setAdapter(adapter);
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
}

更新

  - Shops
         -AAA
             Dealer: "AAA"
             Email: "a@mail.ru"
             SAP:   "D666"
         -BBB
             Dealer: "BBB"
             Email:  "r@mail.ru"
             SAP:     "D333"
         -CCC
             Dealer:  "BBB"
             Email:   "g@mail.ru"
             SAP:     "D222"

【问题讨论】:

  • 请编辑您的问题以包含此代码正在访问的 JSON 的最小 sn-p(作为文本,请不要截图)。
  • 我更新了我的帖子
  • 在这里您可以找到使用 ListView 和 RecyclerView 的完美示例:github.com/firebase/FirebaseUI-Android/blob/master/database/…
  • 顺便说一句,我认为 dealer 不是 Shops 的直系子女...

标签: android listview firebase firebase-realtime-database firebaseui


【解决方案1】:

看来你把事情复杂化了。这应该是您需要的唯一代码:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Shops");

FirebaseListAdapter<String> adapter = new FirebaseListAdapter<String>(
    DealerListView.this,
    String.class,
    android.R.layout.simple_list_item_1,
    ref) {
        protected void populateView(View v, String s, int i) {
          TextView textView = (TextView) v.findViewById(android.R.id.text1);
          textView.setText(s);
        }
        protected String parseSnapshot(DataSnapshot snapshot) {
            return snapshot.child("Dealer").getValue(String.class);
        }
};
mListView.setAdapter(adapter);

因此,使用此代码,您可以获得商店快照列表,然后为每个快照提取 parseSnapshotDealer 属性的值

【讨论】:

  • 谢谢,listview 返回正确的行数,我看到了,但它们是空的,没有“经销商”名称。
  • 我能得到任何这个提取的例子吗,我是 Java 新手,它会帮助我理解我到底要做什么。提前致谢
  • 你需要在调试器中运行代码,看看你在parseSnapshot()中得到了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 1970-01-01
  • 2014-01-05
  • 2014-11-15
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
相关资源
最近更新 更多