【问题标题】:Retrieve multiple data from Firebase to my Android applciation从 Firebase 检索多个数据到我的 Android 应用程序
【发布时间】:2018-10-03 11:30:06
【问题描述】:

我正在构建一个应用程序,该应用程序需要从我的 Firebase 数据库中检索多个数据并将数据存储在我的应用程序中。

这是我的数据库结构,我想检索从 1 到最后一个数字的所有数据,以及检索每个数字内的数据。

有人知道怎么做吗?提前致谢。

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    要获取Destination 节点下的所有对象,您需要使用getChildren() 方法迭代DataSnapshot 对象,如下所示:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference destinationRef = rootRef.child("Destination");
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String name = ds.child("name").getValue(String.class);
                Log.d(TAG, name);
            }
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d(TAG, databaseError.getMessage());
        }
    };
    destinationRef.addListenerForSingleValueEvent(valueEventListener);
    

    如果您使用的是模型类,请使用以下代码:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference destinationRef = rootRef.child("Destination");
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                YourClass yourClass = ds.getValue(YourClass.class);
                Log.d(TAG, yourClass.getName());
            }
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.d(TAG, databaseError.getMessage());
        }
    };
    destinationRef.addListenerForSingleValueEvent(valueEventListener);
    

    【讨论】:

    • 嗨,同性恋圣母!你有没有试过我上面的解决方案,它有效吗?
    • 先生,您知道如何在此数据中添加复选框吗?
    • 为了遵守这个社区的规则,请添加另一个新问题,以便我或其他用户可以帮助您。
    【解决方案2】:

    尝试此代码并根据您的数据库名称等进行更改。

    public class DisplayActivity extends AppCompatActivity {
    private RecyclerView mRvData;
    private DisplayAllData allDataAdapter;
    private DatabaseReference mDatabase;
    private TextView mTvEmpty;
    private FirebaseDatabase mFirebaseInstance;
    private List<User> mUserList = new ArrayList<>();
    
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.display_data);
        initView();
    }
    
    private void initView() {
        mFirebaseInstance = FirebaseDatabase.getInstance();
        mDatabase = mFirebaseInstance.getReference("usersDb/UserTable");
    
        mRvData = findViewById(R.id.rvData);
        mTvEmpty = findViewById(R.id.dlTvEmpty);
        mRvData.setLayoutManager(new LinearLayoutManager(this));
        mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                mUserList.clear();
                for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                    User user = dataSnapshot1.getValue(User.class);
                    mUserList.add(user);
                }
                allDataAdapter = new DisplayAllData(DisplayActivity.this, mUserList);
                mRvData.setAdapter(allDataAdapter);
                allDataAdapter.notifyDataSetChanged();
                if (mUserList.isEmpty())
                    mTvEmpty.setVisibility(View.VISIBLE);
                else
                    mTvEmpty.setVisibility(View.GONE);
            }
    
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        });
    
    }
    

    }

    更多信息请参考此链接 https://www.simplifiedcoding.net/firebase-realtime-database-crud/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      相关资源
      最近更新 更多