У меня есть узел Users, и под ним вложен узел Applied Jobs. После того, как человек нажимает кнопку «Применить к заданию», сведения о задании добавляются в узел «Прикладные задания». Однако я не хочу, чтобы пользователь мог снова подать заявку. Я также подумал о том, чтобы проверить, существует ли он по идентификатору, но я понял, что даже если пользователь подает заявку на работу дважды, выдвигаемый идентификатор отличается. Итак, я не уверен, как go об этом.
Как вы можете видеть ниже, несмотря на то, что это одна и та же запись, идентификатор отличается.
![enter image description here](https://i.stack.imgur.com/mgsQC.png)
Это то, что я пытался так на основе похожих сообщений, но не работает.
JobInfo. java
package com.example.oddsynew;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import com.google.android.material.navigation.NavigationView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.squareup.picasso.Picasso;
public class JobInfo extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
TextView jobName, jobCharge, jobLocation, jobDate, jobTime, jobDesc, jobTasks, addPref, recruiterName;
ImageView profPic;
String jobname, jobloc, jobcharge, profpic, startdate, enddate, starttime, endtime, jobdesc, jobtasks, addpref, recruitername, userID;
ImageButton menuIcon;
Button requestForHireBtn;
DatabaseReference myRef, jobNameRef;
FirebaseAuth mAuth;
FirebaseUser u;
DrawerLayout drawer;
NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_job_info);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
menuIcon = (ImageButton) findViewById(R.id.menuIcon);
requestForHireBtn = (Button) findViewById(R.id.requestedBtn);
navigationView = (NavigationView) findViewById(R.id.hamburger_menu);
navigationView.setNavigationItemSelectedListener(this);
navigationView.setCheckedItem(R.id.nav_gigs);
menuIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
drawer.openDrawer(GravityCompat.START);
}
});
jobName = (TextView) findViewById(R.id.jobName_info);
jobCharge = (TextView) findViewById(R.id.jobCharge_info);
jobLocation = (TextView) findViewById(R.id.jobLocation_info);
profPic = (ImageView) findViewById(R.id.prof_pic_info);
jobDate = (TextView) findViewById(R.id.jobDate_info);
jobTime = (TextView) findViewById(R.id.jobTime_info);
jobDesc = (TextView) findViewById(R.id.jobDesc);
jobTasks = (TextView) findViewById(R.id.jobTasks);
addPref = (TextView) findViewById(R.id.additionalPref);
recruiterName = (TextView) findViewById(R.id.recruiterName_info);
jobname = getIntent().getStringExtra("jobName");
jobloc = getIntent().getStringExtra("jobLocation");
jobcharge = getIntent().getStringExtra("jobCharge");
profpic = getIntent().getStringExtra("profPic");
startdate = getIntent().getStringExtra("startDate");
enddate = getIntent().getStringExtra("endDate");
starttime = getIntent().getStringExtra("startTime");
endtime = getIntent().getStringExtra("endTime");
jobdesc = getIntent().getStringExtra("jobDesc");
jobtasks = getIntent().getStringExtra("jobTasks");
addpref = getIntent().getStringExtra("addPref");
recruitername = getIntent().getStringExtra("recruiterName");
jobName.setText(jobname);
jobCharge.setText(jobcharge);
jobLocation.setText(jobloc);
jobDate.setText(startdate + " - " + enddate);
jobTime.setText(starttime + " - " + endtime);
jobDesc.setText(jobdesc);
jobTasks.setText(jobtasks);
addPref.setText(addpref);
recruiterName.setText(recruitername);
Picasso.get().load(profpic).into(profPic);
requestForHireBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuth = FirebaseAuth.getInstance();
u = mAuth.getCurrentUser();
userID = u.getUid();
jobNameRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userID).child("Applied Jobs").child("job_name");
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (!dataSnapshot.equals(jobname)) {
myRef = FirebaseDatabase.getInstance().getReference().child("Users").child(userID).child("Applied Jobs").push();
myRef.child("job_name").setValue(jobname);
myRef.child("job_location").setValue(jobloc);
myRef.child("recruiter_name").setValue(recruitername);
myRef.child("job_charge").setValue(jobcharge);
myRef.child("profile_pic").setValue(profpic);
myRef.child("start_date").setValue(startdate);
myRef.child("end_date").setValue(enddate);
myRef.child("start_time").setValue(starttime);
myRef.child("end_time").setValue(endtime);
myRef.child("job_desc").setValue(jobdesc);
myRef.child("job_tasks").setValue(jobtasks);
myRef.child("add_pref").setValue(addpref);
requestForHireBtn.setText("Request Sent!");
requestForHireBtn.setEnabled(false);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(JobInfo.this, "Error", Toast.LENGTH_SHORT).show();
}
};
jobNameRef.addValueEventListener(listener);
}
});
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_home:
Intent intent = new Intent(JobInfo.this, Home.class);
startActivity(intent);
break;
case R.id.nav_gigs:
Intent intent2 = new Intent(JobInfo.this, MyGigs.class);
startActivity(intent2);
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
}