我已经使用Firestore UI实现了RecyclerView。它显示当前用户名和个人资料图片。当用户单击回收器视图的任何项目时,他将进入用户配置文件活动。在那里,应该显示用户的名称和个人资料图片,但目前情况并非如此,因为我不知道如何将一个项目的数据发送到下一个活动并将 TextView 设置为其值。意图是最好的方法,还是我应该只发送被点击的用户的 UID,然后在"用户配置文件活动"中从 Firestore 检索用户的数据?我怎样才能做到这一点?有关于如何使用实时数据库实现此目的的教程,但我不想切换数据库。
这是我实现回收器视图的活动:
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player_search);
...
userAdapter.setOnItemClickListener(new UserAdapter.OnItemClickListener() {
@Override
public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
String user_id = documentSnapshot.getId();
}
});
...
下面是 RecyclerView 的适配器类,其目的用于打开下一个活动:
public class UserAdapter extends FirestoreRecyclerAdapter<Users, UserAdapter.UserHolder> {
private OnItemClickListener listener;
public UserAdapter(@NonNull FirestoreRecyclerOptions<Users> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull UserHolder holder, int position, @NonNull Users model) {
holder.textViewUsername.setText(model.getUsername());
Picasso.get()
.load(model.getAvatar_id())
.into(holder.circleImageView);
}
@NonNull
@Override
public UserHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.listitem_search_result,parent, false);
return new UserHolder(view);
}
class UserHolder extends RecyclerView.ViewHolder {
TextView textViewUsername;
CircleImageView circleImageView;
public UserHolder(@NonNull View itemView) {
super(itemView);
textViewUsername = itemView.findViewById(R.id.player_name_search);
circleImageView = itemView.findViewById(R.id.image_view_avatar_player_search);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION && listener != null){
listener.onItemClick(getSnapshots().getSnapshot(position),(position));
Intent i = new Intent (itemView.getContext(), FriendRequest.class);
itemView.getContext().startActivity(i);
}
}
});
}
}
public interface OnItemClickListener{
void onItemClick (DocumentSnapshot documentSnapshot, int position);
}
public void setOnItemClickListener(OnItemClickListener listener){
this.listener = listener;
}
}
我的收藏的结构是这样的:
User
uid
username: "Player1"
avatar_id: "uri of a picture stored in Storage"
任何帮助都非常感谢!
为了将信息从一个活动发送到另一个活动,请使用 Intent
Intent i = new Intent (itemView.getContext(), FriendRequest.class);
i.putExtra("username", textViewUsername.getText().toString());
i.putExtra("profile",model.getAvatar_id());
itemView.getContext().startActivity(i);
在您的 FriendRequest 活动中,使用 getIntent 接收该数据。
Intent intent = getIntent();
String username = intent.getStringExtra("username");
String link = intent.getExtra("profile");
现在,您可以使用这些值。