android - 当我询问用户 ID 时,代码中出现错误
问题描述
在适配器中,我想获取所选用户的用户 ID。但它显示错误
获取参考(位置)
拿到钥匙时。如何解决?这是我的 OnBindViewHolder,
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
final MyHolder myHolder = (MyHolder) holder;
final Users current = data.get(position);
mUsersDatabase = FirebaseDatabase.getInstance().getReference("Users");
myHolder.name.setText(current.getName());
myHolder.status.setText(current.getStatus());
Picasso.get().load(current.getImage()).placeholder(R.drawable.download).into(myHolder.img);
final String user_id = getRef(position).getKey();
View.OnClickListener profileView = new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent profile_intent = new Intent(mContext,ProfileActivity.class);
profile_intent.putExtra("user_id",user_id);
mContext.startActivity(profile_intent);
}
};
myHolder.itemView.setOnClickListener(profileView);
}
我想获取所选用户的详细信息。
这是我的 ProfileActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
String user_id = getIntent().getStringExtra("user_id");
mUsersDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(user_id);
mProfileImage = (ImageView) findViewById(R.id.profile_image);
mProfileName = (TextView) findViewById(R.id.profile_display_name);
mProfileStatus = (TextView) findViewById(R.id.profile_status);
mProfileFirendsCount = (TextView) findViewById(R.id.profile_total_friends);
mSendRequestBtn = (Button) findViewById(R.id.request_btn);
mUsersDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String display_name = dataSnapshot.child("name").getValue().toString();
String status = dataSnapshot.child("status").getValue().toString();
String image = dataSnapshot.child("image").getValue().toString();
mProfileName.setText(display_name);
mProfileStatus.setText(status);
}
解决方案
由于选择任何用户时都需要 user_id,因此您必须在 onClickListener() 中使用 getAdapterPosition() 获取适配器位置,如下所示:
View.OnClickListener profileView = new View.OnClickListener() {
@Override
public void onClick(View v) {
String user_id = getRef(getAdapterPosition()).getKey();
Intent profile_intent = new Intent(mContext,ProfileActivity.class);
profile_intent.putExtra("user_id",user_id);
mContext.startActivity(profile_intent);
}
};
推荐阅读
- sql - 如何将每天的值限制为 1000
- python - Python:显式声明属性的静态性
- java - 面临从数据库显示元素到表的问题
- sftp - 如何修复 SFTP 端口上的 WinSCP 错误“System.Xml.XmlException:缺少根元素”
- ruby-on-rails - 如何使用 rails 中的回形针 gem 从 URL 下载 Internet 图像?
- c# - Azure Functions - 拒绝访问路径
- javascript - GPU 绑定的动画是否仍受 CPU 负载的影响?
- r - 指示日期属于哪个时间间隔
- sql - 比较两个表中的两个值的最快方法
- javascript - 如何处理对 JavaScript 中不可访问/“不可见”属性的访问?