Как получить доступ к КЛЮЧУ дочернего элемента по его положению в пользовательском классе Адаптера - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь получить доступ к ключу, через который хранится информация о моем сообщении в базе данных firebase. Все, что мне нужно, это получить доступ к ключу, как мы делаем, используя библиотеку.

final String TheKey = getRef(position).getkey();

Как я могу сделать приведенный выше код, когда я использую пользовательский RecyclerView Как я могу получить доступ к ключу, как код выше? Проблема в том, что я использую Custom RecyclerView, который не поддерживает getRef(). Я хочу получить доступ к ключу внутри onBindViewHolder, где я могу получить ключ ниже, мой код.

@Override
public void onBindViewHolder(@NonNull final viewHolder holder, final int position) {
    final String kkk = List.get(position).getUid();
    Posts posts = List.get(position);
    Picasso.get().load(posts.getPostimage()).placeholder(R.drawable.photo).into(holder.PostImage);
    Picasso.get().load(posts.getProfileimage()).fit().into(holder.PostProfileimage);
    holder.PostUserName.setText(posts.getFullname());
    holder.PostDate.setText(posts.getDate());
    holder.PostTime.setText(posts.getTime());
    holder.PostDescription.setText(posts.getDescription());

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PostsKey = FirebaseDatabase.getInstance().getReference().child("Posts");
            final int postposition = position;
            Toast.makeText(context, "User Clicked at Position "+postposition, Toast.LENGTH_SHORT).show();
           // Toast.makeText(context, ""+kkk, Toast.LENGTH_SHORT).show();
            final String theKey = PostsKey.getRef().getKey();
            Toast.makeText(context, ""+theKey, Toast.LENGTH_SHORT).show();
        }
    });
}

1 Ответ

0 голосов
/ 25 марта 2020

Я предполагаю, что под "библиотекой вы подразумеваете FirebaseUI, в частности его адаптеры для отображения списков контента из базы данных Firebase Realtime в Android представлениях. *

You ' Мне придется делать то же самое, что и FirebaseUI, то есть отслеживать позиции клавиш и значения всех элементов. FirebaseUI обрабатывает это в FirebaseArray классе , просто сохраняя DataSnapshot s из Firebase в списке.

Однако большинство разработчиков предпочитают сохранять значение из своих снимков в пользовательских классах Java для более непосредственного использования их адаптером, и в этом случае вы обычно будете есть что-то вроде:

List<Post> posts;

Класс Post здесь имеет свойства для каждого сообщения из вашей базы данных, и вы получите его с чем-то вроде snapshot.getValue(Post.class). Но так как Post имеет только значение объекта, вам не хватает ключа.

Очень простой способ также отследить ключи, добавив второй список:

List<String> keys;

Теперь всякий раз, когда Вы добавляете сообщение в список, вы также добавляете ключ в другой список. Что-то вроде:

posts.add(snapshot.getValue(Post.class));
keys.add(snapshot.getKey());

И когда у вас есть оба списка, вы можете найти ключ либо по его индексу / позиции в keys, либо сначала просматривая сообщение в posts, а затем просматривая соответствующий ключ по индексу.

См. также:

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