gpt4 book ai didi

java - Android - Firebase - 提示群聊名称

转载 作者:行者123 更新时间:2023-12-02 12:12:45 25 4
gpt4 key购买 nike

瞄准

群聊已创建。我想在 RecyclerView 上提示群聊的名称。

数据库树

enter image description here

我有一个管理员帐户来为用户创建这些群聊。

数据库中显示的 Android、亚洲和欧洲群聊不是固定变量。它们是名字。新的群聊名称可能是“地球”。

因此,除了由节点本身调用之外,没有其他方法可以通过变量来调用它。

问题

我无法提示管理员创建的任何群聊“名称”。这意味着,我无法提示出“Android”、“亚洲”和“欧洲”或在群聊节点中创建和存储的任何群聊

Activity 流程

AdminActivity---{创建群聊.func}

用户---- View ---->GroupFragment{提示群聊}

AdminActivity.java - createGroupChat 函数

public void createGroupChat(){
Map<String, Object> groupChatMap = new HashMap<String, Object>();
groupChatMap.put(jAdminGroupChatName.getText().toString(),"");
groupChatRoot.updateChildren(groupChatMap);
Toast.makeText(AdminActivity.this, "Group Chat Created", Toast.LENGTH_SHORT).show();
jAdminGroupChatName.setText("");
}

群聊类

// GET GROUP CHAT NAME

public class GroupChats {
public String name;

public GroupChats() {
}

public GroupChats(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

GroupFragment.java

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

FirebaseRecyclerAdapter<GroupChats, GroupChatViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<GroupChats, GroupChatViewHolder>(
GroupChats.class,
R.layout.layout_groups,
GroupChatViewHolder.class,
jGroupsDatabase
){
@Override
protected void populateViewHolder(GroupChatViewHolder viewHolder, GroupChats model, int position) {
viewHolder.setName(model.getName());

final String viewGroupID = getRef(position).getKey();

viewHolder.jGroupChatView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intentGroupChat = new Intent(getActivity(), ChatFragment.class);
intentGroupChat.putExtra("viewGroupID", viewGroupID);
startActivity(intentGroupChat);
}
});

}
};

jGroupChatList.setAdapter(firebaseRecyclerAdapter);

}

public static class GroupChatViewHolder extends RecyclerView.ViewHolder{

View jGroupChatView;

public GroupChatViewHolder(View itemView) {
super(itemView);
jGroupChatView = itemView;
}

public void setName(String groupName){
TextView jAllGroupChatName = jGroupChatView.findViewById(R.id.groupChatNameTxt);
jAllGroupChatName.setText(groupName);
}

}
}

其他评论

  • 在线教程

我在 YouTube 上观看了 Android Firebase 群聊教程。链接为https://www.youtube.com/watch?v=wVCz1a3ogqk 。在该视频中,开发人员编写的代码在同一个类(MainActivity.java)中提示群聊名称。

教程流程:

MainActivity----{创建群聊.func}----{群聊提示.func}

  • 任务要求

我的任务要求使我有必要从 AdminActivity 创建它,并仅为用户 View 提示群聊名称。

任务流程:

AdminActivity---{创建群聊.function}

用户---- View ---->GroupFragment{提示群聊}

future 的实现 - future 的问题

如果我能够在 Stackoverflow 用户的帮助下解决这个问题,我 future 的实现是允许用户单击“群聊”名称,然后将他们带入群聊本身,从而允许向经过身份验证的 (Firebase) 用户发送电子邮件,以便与该群聊中的其他人聊天。当然,如果我无法编写代码,我会在另一个问题中寻求解决方案。

最佳答案

如果“群聊”的格式如下,您的代码就可以工作:

Correct format

为此,您应该更新您的 createGroup() 函数:

public void createGroupChat(){
String newGroupName = jAdminGroupChatName.getText().toString();
GroupChats newGroupChat = new GroupChats(newGroupName);
String newGroupKey = groupChatRoot.push().getKey();
groupChatRoot.child(newGroupKey).setValue(newGroupChat);
Toast.makeText(AdminActivity.this, "Group Chat Created - Key: " + newGroupKey, Toast.LENGTH_SHORT).show();
jAdminGroupChatName.setText("");
}
<小时/>

但是,如果您想保留当前格式,则不需要使用 FirebaseRecyclerAdapter。您可以在 groupChatRoot 上调用 addValueEventListener() 并迭代结果,将键保存到列表中,然后在 recyclerview 中显示它们,如下所示:

groupRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<String> groupChatNames = new ArrayList<>();
for (DataSnapshot child : dataSnapshot.getChildren()) {
groupChatNames.add(child.getKey());
}
Adapter adapter = new Adapter(groupChatNames);
recyclerView.setAdapter(adapter);
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

其中Adapter类如下:

public class Adapter extends RecyclerView.Adapter<Adapter.MyHolder> {

ArrayList<String> list;

public Adapter(ArrayList<String> list) {
this.list = list;
}


@Override
public Adapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_groups, parent, false);
MyHolder holder = new MyHolder(view);
return holder;
}

@Override
public void onBindViewHolder(MyHolder holder, int position) {
holder.setText(list.get(position));
}

@Override
public int getItemCount() {
return list.size();
}

class MyHolder extends RecyclerView.ViewHolder {
TextView nameTextView;

public MyHolder(View itemView) {
super(itemView);
nameTextView = (TextView) itemView.findViewById(R.id.groupChatNameTxt);
}

public void setText(String groupName) {
nameTextView.setText(groupName);
}
}
}

关于java - Android - Firebase - 提示群聊名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46412882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com