Просмотр данных конкретного пользователя при нажатии на кнопку профиля - PullRequest
0 голосов
/ 04 ноября 2019

Я создал приложение, в котором все данные пользователя в базе данных реального времени Firebase извлекаются в представлении Recycler. В нем у меня есть некоторые данные, такие как имя, дата рождения, род занятий и т. Д. Я добавил кнопку в этом представлении переработчика, которая при нажатии покажет все детали этого конкретного пользователя. У меня несколько пользователей, но при нажатии этой кнопки в каждом профиле отображаются только данные одного пользователя.

Это снимок моего аутентифицированного пользователя

Есть еще пользователикак приведенный выше снимок базы данных

Это мой адаптер представления переработчика:

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) {

        }
    });
}}

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

0 голосов
/ 04 ноября 2019

Предполагая, что ваш код извлекает данные из базы данных и что вы сохраняете данные в списке или массиве ... в своем намерении выполните:

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 в действии, потому что это должно быть сделано только один раз. Во второй раз, когда вы это сделаете, вы получите исключение. Лучше подклассифицируйте свое приложение и проведите там инициализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...