java - 如何从 Firebase 中检索 ListView 中的数据

标签 java android firebase firebase-realtime-database

Data Structure in Firebase

你能帮我解决这个问题吗,我尝试在 Listview 中显示来自 firebase 的数据,但没有显示任何内容!

ListView listView;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
ArrayList<String> arrayList = new ArrayList<>();

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

    firebaseDatabase=FirebaseDatabase.getInstance();
    databaseReference= firebaseDatabase.getReference("Users");


    listView=(ListView) findViewById(R.id.list);
    final ArrayAdapter<String>  arrayAdapter= new ArrayAdapter<String>(this ,android.R.layout.simple_list_item_1,arrayList);
    listView.setAdapter(arrayAdapter);
    Toast.makeText(this, "ok", Toast.LENGTH_SHORT).show();
    databaseReference.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            String value=dataSnapshot.getValue(String.class);
            arrayList.add(value);
            arrayAdapter.notifyDataSetChanged();

        }

最佳答案

public class MainActivity extends AppCompatActivity{
 ListView listView;
    FirebaseDatabase firebaseDatabase;
    DatabaseReference databaseReference;
    ArrayList<String> arrayList = new ArrayList<>();
     ArrayAdapter<String> arrayAdapter;

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

firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference("Users");


listView = (ListView) findViewById(R.id.lists);

Toast.makeText(this, "ok", Toast.LENGTH_SHORT).show();
databaseReference.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
        String value=dataSnapshot.getValue(String.class);
        arrayList.add(value);
        arrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, arrayList);
        listView.setAdapter(arrayAdapter);

    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {

    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {

    }

    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

 }}

这个监听器实际上是用于列表的,所以它不是来自监听器。 此外,由于用户未通过身份验证,您需要将数据库中的规则更改为:-

 {
"rules": {
   ".read": "true",
   ".write": "true"
 }
}

关于java - 如何从 Firebase 中检索 ListView 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46999035/

相关文章:

android - 如何在后台测试时强制销毁应用程序

iphone - 我如何从浏览器 javascript 获取智能手机上的母语本地化?

ios - Crashlytics:编译器生成的含义是什么?

node.js - 根据 Firebase-Admin 中的(prod、dev、test、stag)等环境初始化单独的应用程序

java - 我无法从 plpgsql 函数中读取 java 返回的数组

java - java中的不可变类

android - AlarmManager:PendingIntent 在某些设备上从最近的应用程序中刷过应用程序后消失了

java - 为什么 EntityManager 关闭了?

java - 为什么我的 java 应用程序不能在另一台计算机上运行?

ios - Swift:无法使用 Firebase 将数据同步到 TableView