同时检索sqlite和firebase数据

时间:2018-12-31 12:49:38

标签: java android database sqlite firebase

我正在从sqlite检索UID,并使用该uid从Firebase中获取数据,但问题是它仅获取第一个UID的值,而不是之后获取

代码

  String userId = null;
            Cursor csr = myDBHlpr.getAllQuestions4();
            while (csr.moveToNext()) {
                userId = csr.getString(csr.getColumnIndex(KEY_USER_ID));
            }
            final String uid = userId;


            mUsersDatabase.child(userId).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    mName = dataSnapshot.child("Name").getValue().toString();
                    String mStatus = dataSnapshot.child("Status").getValue().toString();
                    String mDisplayImage = dataSnapshot.child("Image").getValue().toString();

                    mUsers.add(new IdHelper(mName, mStatus, mDisplayImage));
                    mAdapter.notifyDataSetChanged();

                }
                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

该表具有多个具有不同UID的行,并且Firebase也具有多个UID数据...我已多次交叉检查。但是仍然只获取一项。这是为什么?我应该检索sqlite数据是字符串[]吗? 数据库ref是完美的,根据我的问题是,我仅以userid的身份获取一个数据,并以为它在那里停止,因此仅从firebase获取了一个ID数据。反正有人可以帮我吗

编辑

    public Cursor getAllQuestions4() {
    return this.getWritableDatabase().query(TABLE_ID_DATA,null,null,null,null,null,null);
}

1 个答案:

答案 0 :(得分:0)

我猜你的问题是while循环。您仅使用最后一个userId。因此,请按以下方式更改代码(请注意while循环的最后一个括号的更改):

String userId = null;
Cursor csr = myDBHlpr.getAllQuestions4();

while (csr.moveToNext()) 
{
    userId = csr.getString(csr.getColumnIndex(KEY_USER_ID));

    final String uid = userId;

    mUsersDatabase.child(userId).addValueEventListener(new ValueEventListener() 
    {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            mName = dataSnapshot.child("Name").getValue().toString();
            String mStatus = dataSnapshot.child("Status").getValue().toString();
            String mDisplayImage = dataSnapshot.child("Image").getValue().toString();

            mUsers.add(new IdHelper(mName, mStatus, mDisplayImage));
            mAdapter.notifyDataSetChanged();

        }
        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}