получение данных sqlite и firebase одновременно - PullRequest
0 голосов
/ 31 декабря 2018

Я извлекаю UID из sqlite и использую этот 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 это строка []?Ссылка на базу данных идеальна, и проблема, на мой взгляд, заключается в том, что я извлекаю только одни данные в качестве идентификатора пользователя и думаю, что на этом все заканчивается, поэтому из базы данных извлекаются данные только одного идентификатора.В любом случае, кто-нибудь может мне помочь, пожалуйста

Редактировать

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

1 Ответ

0 голосов
/ 02 января 2019

Полагаю, ваша проблема в цикле while.Вы используете только последний идентификатор пользователя.Поэтому измените ваш код следующим образом (обратите внимание на изменение последней скобки вашего цикла 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) {

        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...