【问题标题】:Retrieving data from Firebase and populate them in listview从 Firebase 检索数据并将它们填充到列表视图中
【发布时间】:2017-04-13 01:50:28
【问题描述】:
dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(final DataSnapshot dataSnapshot) {

            for (final DataSnapshot ds : dataSnapshot.getChildren()){
                arr.add(ds.child("name").getValue().toString()+"--"+ds.child("id").getValue().toString());
//ds.child("id").getValue().toString() this is how i get id from database
                lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        Toast.makeText(getApplication(),"id :"+ds.getKey(),Toast.LENGTH_SHORT).show();
                    }
                });
            }
            lv.setAdapter(arrayAdapter);
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

这就是我从 Firebase 获取数据并将它们发布到列表视图中的方式。 onItemClick 我想在 toast 中显示用户的 id(来自数据库)。

【问题讨论】:

    标签: android listview firebase firebase-realtime-database


    【解决方案1】:

    尽量不要在 Firebase 方法中创建适配器的点击侦听器。

    lv.setAdapter(arrayAdapter);
    lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String clicked = arrayAdapter.getItem(position).toString();
            Toast.makeText(MainActivity.this,
                "id :" + clicked,
                Toast.LENGTH_SHORT).show();
        }
    });
    
    
    dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(final DataSnapshot dataSnapshot) {
            arrayAdapter.clear();
            for (DataSnapshot ds : dataSnapshot.getChildren()){
                arrayAdapter.add(ds.child("name").getValue().toString()+"--"+ds.child("id").getValue().toString());
            }
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
    
        }
    });
    

    我想在 toast 中显示用户的 ID(来自数据库)

    然后你可以使用这样的东西

    String clicked = arrayAdapter.getItem(position).toString();
    String[] parts = clicked.split("--"); // This is because you added "--" on the other string. 
    Toast.makeText(MainActivity.this,
        "id :" + parts[1],
        Toast.LENGTH_SHORT).show();
    

    如果您将 firebase 值映射到 Java 对象中会更简单一些

    【讨论】:

      猜你喜欢
      • 2013-01-24
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多