Android Studio Firebase 数据与 ID 对比

标签 android firebase firebase-realtime-database match

有一项 Activity 列出了在 Firebase 中注册的用户。这里列出了所有用户。还有消息 Activity 。我想列出刚刚在那里发短信的人。我在 Firebase 中有聊天列表。在这里发短信的人是id。以下代码列出了所有用户。将用户表与 Chatlist 表进行比较,如果 ID 匹配,消息将被添加到 Activity 中。如何更改此代码以进行匹配?

 @Override
protected void onStart() {
    super.onStart();

    FirebaseRecyclerAdapter<Users, AllUserViewHolder> adapter =
            new FirebaseRecyclerAdapter<Users, AllUserViewHolder>
                    (
                            Users.class,
                            R.layout.user_item,
                            AllUserViewHolder.class,
                            usersRef

                    )
            {
                @Override
                protected void populateViewHolder(final AllUserViewHolder viewHolder, Users model, final int position)
                {
                    final String usersIDs = getRef(position).getKey();

                    usersRef.child(usersIDs).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            if (dataSnapshot.exists())
                            {
                                final String userName =dataSnapshot.child("fullname").getValue().toString();
                                final String profileImage = dataSnapshot.child("profileimage").getValue().toString();
                                final String biography = dataSnapshot.child("biography").getValue().toString();

                                viewHolder.setFullname(userName);
                                viewHolder.setProfileimage(getApplicationContext(), profileImage);
                                viewHolder.setBiography(biography);

                                viewHolder.mView.setOnClickListener(new View.OnClickListener() {
                                    @Override
                                    public void onClick(View view) {

                                        CharSequence options[] = new CharSequence[]
                                                {
                                                        userName + "profilini gör",
                                                        "Mesaj Gönder"
                                                };
                                        AlertDialog.Builder builder = new AlertDialog.Builder(MessageActivity.this);
                                        builder.setTitle("Seç:");

                                        builder.setItems(options, new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialogInterface, int i)
                                            {
                                                if (i ==0)
                                                {
                                                    Intent profileIntent = new Intent(MessageActivity.this, UserProfileActivity.class);
                                                    profileIntent.putExtra("visit_user_id", usersIDs);
                                                    startActivity(profileIntent);
                                                }
                                                if (i == 1)
                                                {
                                                    Intent chatIntent = new Intent(MessageActivity.this, ChatActivity.class);
                                                    chatIntent.putExtra("visit_user_id", usersIDs);
                                                    chatIntent.putExtra("userName", userName);
                                                    startActivity(chatIntent);
                                                }

                                            }
                                        });
                                        builder.show();
                                    }
                                });
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });




                }
            };
    usersList.setAdapter(adapter);
}

最佳答案

无需将它们一一匹配,您可以将它们全部临时添加到一个数组列表中,然后将该数组列表的内容与您的聊天列表 的内容进行匹配。

ArrayList<String> temp = new ArrayList<String>();

这种方法不仅更适合您考虑,而且编码起来也相对容易。

如果您对该方法有一些困难,请添加您的数据库结构,我可以帮助您为此编写代码。

关于Android Studio Firebase 数据与 ID 对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53917154/

相关文章:

android - 如何更新 MapBox 中现有的线图层

android - HttpCookie.hasExpired() 在 Nougat 之前无法正常工作 (24)

java - 未从 firebase 获取 RecyclerView 的所有结果

javascript - DELETE 后 GET 时 Firebase 返回空引用

android - 设置默认选中的单选按钮

java - NETWORK_PROVIDER 未提供位置更新

firebase - 在 Flutter Firebase 应用程序中存储 API key ?我需要隐藏它们吗?如何?

Android facebook-login 库 11.2.0 崩溃 Android 12 - 定位 S+(版本 31 及更高版本)需要 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一

ios - 使用 Firebase Swift 检索数据错误

javascript - Firebase POST 自定义 ID