我正在从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);
}
答案 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) {
}
});
}