Помещение полей Firebase Cloud Firestore Document в стопку карт - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть Коллекция документов, и я пытаюсь поместить каждое поле «Имя» в стопку карточек. Коллекция называется «Пользователи», а Документы - «ИД пользователя». Каждый документ содержит поля «Имя» и «Пол» этого пользователя. До сих пор я был в состоянии получить имя текущего зарегистрированного пользователя в стеке карт, но у меня возникли проблемы с переносом других пользователей в базе данных в стек. Вот код, который я использую. Не получаю никаких ошибок в Logcat или сбоев. Данные просто не добавляются. Какие-либо предложения?

public class MainActivity extends AppCompatActivity {
public static final String TAG = MainActivity.class.getSimpleName();

TextView profileName,gender,StrangerName;
FirebaseAuth mAuth;
FirebaseFirestore dataBase;
String userID;
ImageView ProfilePic;
private SwipeCardsView swipeCardsView;
private List<Model> modelList = new ArrayList<>();

    @Override 
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mAuth = FirebaseAuth.getInstance();
    dataBase = FirebaseFirestore.getInstance();
    userID = mAuth.getCurrentUser().getUid();
    ProfilePic = findViewById(R.id.profilePic);
    StrangerName = findViewById(R.id.name);
    gender = findViewById(R.id.thisperson);
    profileName = findViewById(R.id.userName);

    //SwipeCards
    swipeCardsView = findViewById(R.id.swipeCardsView);
    swipeCardsView.retainLastCard(false);
    swipeCardsView.enableSwipe(true);

    getUserDB();
    getData();
    }
    // Method to get Users Documents
    private void getUserDB () {
        dataBase.collection("Users").get().addOnCompleteListener(new 
          OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    List<String> list = new ArrayList<>();
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        list.add(document.getString("Name"));
                    }
                    Log.d(TAG, list.toString());

                    String strangers = list.toString();
                    StrangerName.setText(strangers);

                } else {
                    Log.d(TAG, "Error getting documents: ", task.getException());
                }
            }});
        }
    // CardAdpater method
     private void getData() {
       modelList.add(new Model(StrangerName,ProfilePic));
          CardAdpater cardAdpater = new CardAdpater(modelList,this);
         swipeCardsView.setAdapter(cardAdpater);
      }
    private class CardStackTransformer implements ViewPager.PageTransformer {
        @Override
        public void transformPage(@NonNull View page, float position) {
    }
    //Logout onClick
    public void LogOut(View view) {
        FirebaseAuth.getInstance().signOut();
        startActivity(new Intent(getApplicationContext(), Login.class));
        finish();
    }
    }
    }

1 Ответ

2 голосов
/ 05 февраля 2020

Попробуйте этот код: я использовал список, чтобы ввести все имена. Не стесняйтесь спрашивать:)

dataBase.collection("Users").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
    if (task.isSuccessful()) {
        List<String> list = new ArrayList<>();
        for (QueryDocumentSnapshot document : task.getResult()) {
            list.add(document.getString("Name"););
        }
        Log.d(TAG, list.toString());
    } else {
        Log.d(TAG, "Error getting documents: ", task.getException());
    }
}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...