单击个人资料按钮时,查看特定用户的数据

我创建了一个应用程序,可在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) {

        }
    });
}}

请帮助我解决这个问题。

admancy 回答:单击个人资料按钮时,查看特定用户的数据

假设您的代码检索到了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并不是一个好习惯,因为它只能执行一次。第二次执行此操作时,您将获得一个例外。更好地对您的应用程序进行子类化,然后在其中进行初始化。

本文链接:https://www.f2er.com/3166780.html

大家都在问