我创建了一个应用程序,可在Recycler View中检索firebase实时数据库中的所有用户数据。在其中,我有一些数据,例如姓名,出生日期,职业等。在回收者视图中添加了一个按钮,单击该按钮将显示该特定用户的所有详细信息。我有多个用户,但是当单击该按钮时,每个配置文件中仅显示一个用户的数据。
This is the snapshot of my authenticated user
还有更多的用户喜欢上面的数据库快照
这是我的回收站视图适配器:
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
Button button;
Context context;
private List<User> MainImageUploadInfoList;
RecyclerViewAdapter(Context context, List<User> TempList) {
this.MainImageUploadInfoList = TempList;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
User user = MainImageUploadInfoList.get(position);
holder.FirstNameTextView.setText(user.getFirst_name()+" "+user.getLast_name());
holder.DateTextView.setText(user.getDate());
holder.HeightTextView.setText(user.getHeight());
holder.EducationTextView.setText(user.getHighest_education());
holder.OccupationTextView.setText(user.getOccupation());
holder.UserIDTextView.setText(user.getUser_id());
holder.ViewProfile.setOnClickListener(new View.OnClickListener() {
@SuppressLint("ResourceType")
@Override
public void onClick(View v) {
Intent it=new Intent(v.getContext(),ViewProfile.class);
context.startActivity(it);
}
});
}
@Override
public int getItemCount() {
return MainImageUploadInfoList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView FirstNameTextView;
//public TextView LastNameTextView;
public TextView DateTextView;
public TextView HeightTextView;
public TextView EducationTextView;
public TextView OccupationTextView;
public TextView UserIDTextView;
public Button ViewProfile;
public ViewHolder(@NonNull View itemView) {
super(itemView);
FirstNameTextView = (TextView) itemView.findViewById(R.id.textView1);
DateTextView=(TextView)itemView.findViewById(R.id.textView3);
HeightTextView=(TextView)itemView.findViewById(R.id.textView4);
EducationTextView=(TextView)itemView.findViewById(R.id.textView5);
OccupationTextView=(TextView)itemView.findViewById(R.id.textView6);
UserIDTextView=(TextView)itemView.findViewById(R.id.textView7);
ViewProfile=(Button)itemView.findViewById(R.id.viewProfile);
}
}}
这是我的ViewProfile代码:
public class ViewProfile extends AppCompatActivity {
ImageView imageView;
TextView tv1,tv2,tv3,tv4,tv5,tv6,tv7,tv8,tv9,tv10,tv11,tv12,tv13,tv14,tv15,tv16;
FirebaseUser mAuth;
FirebaseDatabase database;
DatabaseReference reference;
public static final String Firebase_Server_URL = "https://baghbanshadi-25553.firebaseio.com/User/";
Firebase firebase;
public static final String Database_Path = "User";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_profile);
imageView=(ImageView)findViewById(R.id.imageView4);
tv1=(TextView)findViewById(R.id.textView14);
tv2=(TextView)findViewById(R.id.textView15);
tv3=(TextView)findViewById(R.id.textView16);
tv4=(TextView)findViewById(R.id.textView17);
tv5=(TextView)findViewById(R.id.textView18);
tv6=(TextView)findViewById(R.id.textView19);
tv7=(TextView)findViewById(R.id.textView20);
tv8=(TextView)findViewById(R.id.textView21);
tv9=(TextView)findViewById(R.id.textView22);
tv10=(TextView)findViewById(R.id.textView23);
tv11=(TextView)findViewById(R.id.textView24);
tv12=(TextView)findViewById(R.id.textView25);
tv13=(TextView)findViewById(R.id.textView26);
tv14=(TextView)findViewById(R.id.textView27);
tv15=(TextView)findViewById(R.id.textView28);
tv16=(TextView)findViewById(R.id.textView29);
firebase = new Firebase(Firebase_Server_URL);
reference = FirebaseDatabase.getInstance().getReference().child(Database_Path);
reference.child(mAuth.getUid());
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
User user = dataSnapshot.getValue(User.class);
tv1.setText(user.getFirst_name());
tv2.setText(user.getLast_name());
tv3.setText(user.getLast_name());
tv4.setText(user.getHeight());
tv5.setText(user.getCity_state());
tv6.setText(user.getHobbies());
tv7.setText(user.getHighest_education());
tv8.setText(user.getOccupation());
tv9.setText(user.getIncome());
tv10.setText(user.getMarital_status());
tv11.setText(user.getFamily_members());
tv12.setText(user.getFathers_name());
tv13.setText(user.getMothers_name());
tv14.setText(user.getFathers_occupation());
tv15.setText(user.getMothers_occupation());
tv16.setText(user.getSiblings_names());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}}
请帮助我解决这个问题。
答案 0 :(得分:0)
假设您的代码检索到了Firebase数据,并且您打算将数据保存在列表或数组中……请按照以下说明进行操作:
Intent it=new Intent(v.getContext(),ViewProfile.class).putExtra("pos", position);
context.startActivity(it);
然后在ViewProfile类中,执行以下操作:
int pos = getIntent().getIntExtra("pos", -1);
然后您可以从保存了Firebase用户数据的任何对象中按位置查询,例如
tv.setText(MainImageUploadInfoList.get(pos).something()...); //
顺便说一句,与您的问题无关,但是在活动中初始化Firebase并不是一个好习惯,因为它只能执行一次。第二次执行此操作时,您将获得一个例外。更好地对您的应用程序进行子类化,然后在其中进行初始化。