【问题标题】:retreiving sqlite and firebase data at the same time同时检索 sqlite 和 firebase 数据
【发布时间】:2018-12-31 12:49:38
【问题描述】:

我正在从 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 数据是字符串 [] 吗? 数据库参考是完美的,根据我的问题是,我只获取一个数据作为用户 ID,我认为它停在那里,所以只有一个 ID 数据从火力库中获取。无论如何,有人可以帮助我吗

编辑

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

【问题讨论】:

  • 你能给出myDBHlpr.getAllQuestions4();方法的定义吗?
  • 完成@krokodilko ....................

标签: java android database sqlite firebase


【解决方案1】:

我猜你的问题是 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) {

        }
    });
}

【讨论】:

  • 它仍然只显示最后的 UID 数据...我添加了新数据并检查了它只显示最后的 UID 数据
  • 您能调试您的代码并检查您从本地数据库接收到的用户 ID 吗?所有 userId 都存在吗?
  • 是的,两个 ID 都存在
  • 你能不能通过teamviewer 或者别的什么来查看我的代码?一个星期以来一直在这里停留,所以
  • 不,抱歉,目前不可能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 2018-06-15
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
相关资源
最近更新 更多