доброе утро, я работаю над проектом блокнота, который имеет четыре действия: первое действие под названием MainActivity, которое содержит представление утилизации для отображения заметок, добавленных различными действиями.
И второе одно, называемое действием для взрослых, имеет несколько редактируемых текстов для добавления примечаний в базу данных комнаты и затем отображает его в представлении ресайклера MainActivity. class также у них есть несколько редактируемых текстов, чтобы добавить заметку в КОМНАТНУЮ БАЗУ ДАННЫХ, а затем отобразить ее в представлении ресайклера MainActivity. Проблема заключается в том, что щелчок по любому элементу в представлении ресайклера должен привести меня к источнику, где они были созданы, но при нажатии на любой элемент я всегда перехожу ко второму действию в операторе if, даже если примечание было добавлено различными действиями) "?
Как я могу позволить предмету вернуться к своему источнику, когда по нему щелкнули?
MainActivity class
public class MainActivity extends AppCompatActivity {
//view Model
private PatientViewModel mPatientViewModel;
//RecyclerView
private RecyclerView mRecyclerView;
private PatientAdapter mPatientAdapter;
public String EXTRA_CLINIC1 = ObstetricsActivity.EXTRA_OBS;
public String EXTRA_CLINIC2 = PediatricsActivity.EXTRA_PEDIA;
/////////////////////////////////////////////////////////////////////
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//-----------------------------------------------------------
//recycler view
mRecyclerView = findViewById(R.id.patient_recycler_view);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setHasFixedSize(true);
//connect Recyclerview With adapter
mPatientAdapter = new PatientAdapter();
mRecyclerView.setAdapter(mPatientAdapter);
//View Model
mPatientViewModel = ViewModelProviders.of(this).get(PatientViewModel.class);
mPatientViewModel.getAllPatients().observe(this, new Observer<List<Patients>>() {
@Override
public void onChanged(List<Patients> patients) {
//Update UI
//RecyclerView
mPatientAdapter.setPatients(patients);
// Toast.makeText(MainActivity.this, "on Changed worked", Toast.LENGTH_LONG).show();
}
});
//-----------------------------------------------------------
mPatientAdapter.OnItemClickListener(new PatientAdapter.OnItemClickListener() {
@Override
public void onItemClick(Patients patient) {
if ( EXTRA_CLINIC1 != ObstetricsActivity.EXTRA_OBS || EXTRA_CLINIC2 != PediatricsActivity.EXTRA_PEDIA)
{
Intent i = new Intent(MainActivity.this, AdultsActivity.class);
i.putExtra(AdultsActivity.EXTRA_ID, patient.getId());
i.putExtra(AdultsActivity.EXTRA_NAME, patient.getColumn1Name());
i.putExtra(AdultsActivity.EXTRA_AGE, patient.getColumn2Age());
i.putExtra(AdultsActivity.EXTRA_GENDER, patient.getColumn3Gender());
i.putExtra(AdultsActivity.EXTRA_CLINIC, patient.getColumn4TypeOfClinic());
startActivity(i);
} else if (EXTRA_CLINIC1 == ObstetricsActivity.EXTRA_OBS) {
Intent i = new Intent(MainActivity.this, ObstetricsActivity.class);
i.putExtra(AdultsActivity.EXTRA_ID, patient.getId());
i.putExtra(AdultsActivity.EXTRA_NAME, patient.getColumn1Name());
i.putExtra(AdultsActivity.EXTRA_AGE, patient.getColumn2Age());
i.putExtra(AdultsActivity.EXTRA_CLINIC, patient.getColumn4TypeOfClinic());
i.putExtra(AdultsActivity.EXTRA_GESTAGE, patient.getColumn5GestationalAge());
startActivity(i);
} else if (EXTRA_CLINIC2 == PediatricsActivity.EXTRA_PEDIA){
Intent i = new Intent(MainActivity.this, PediatricsActivity.class);
i.putExtra(AdultsActivity.EXTRA_ID, patient.getId());
i.putExtra(AdultsActivity.EXTRA_NAME, patient.getColumn1Name());
i.putExtra(AdultsActivity.EXTRA_AGE, patient.getColumn2Age());
i.putExtra(AdultsActivity.EXTRA_GENDER, patient.getColumn3Gender());
i.putExtra(AdultsActivity.EXTRA_CLINIC, patient.getColumn4TypeOfClinic());
i.putExtra(AdultsActivity.EXTRA_DEV_HISTORY, patient.getColumn6DevelopmentalHistory());
startActivity(i);
}
//هنا المفروض احط if statement عشان انتقل للاكتيفتي المنشئة لكن مع الاسف ما عرفت ):
//HELP
}
});
/////// Класс адаптера:
Adapter class
public class PatientAdapter extends RecyclerView.Adapter<PatientAdapter.PatientViewHolder>{
private List<Patients> mPatientList = new ArrayList<>();
private OnItemClickListener mListener;
////////////////////////////////////////////////////////////////////////////////////////////////
@NonNull
@Override
public PatientViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.patients_list_item,
parent, false);
return new PatientViewHolder(itemView);
}
//----------------------------------------------------------------------------------------//
@Override
public void onBindViewHolder(@NonNull PatientViewHolder holder, int position) {
Patients currentPatient = mPatientList.get(position);
holder.textViewName.setText(currentPatient.getColumn1Name());
holder.textViewAge.setText(currentPatient.getColumn2Age());
holder.textViewClinic.setText(currentPatient.getColumn4TypeOfClinic());
}
//----------------------------------------------------------------------------------------//
public void setPatients(List<Patients> patients)
{
mPatientList = patients;
notifyDataSetChanged();
}
//----------------------------------------------------------------------------------------//
@Override
public int getItemCount() {
return mPatientList.size();
}
////////////////////////////////////////////////////////////////////////////////////////////////
public class PatientViewHolder extends RecyclerView.ViewHolder {
public TextView textViewName;
public TextView textViewAge;
public TextView textViewClinic;
//----------------------------------------------------------------------------------------//
public PatientViewHolder(@NonNull View itemView) {
super(itemView);
textViewName = itemView.findViewById(R.id.name_text_view);
textViewAge = itemView.findViewById(R.id.age_text_view);
textViewClinic = itemView.findViewById(R.id.clinic_text_view);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int index = getAdapterPosition();
if(true)
{
mListener.onItemClick(mPatientList.get(index));
}
}
});
}
//----------------------------------------------------------------------------------------//
}
////////////////////////////////////////////////////////////////////////////////////////////////
public interface OnItemClickListener {
void onItemClick(Patients patient);
}
////////////////////////////////////////////////////////////////////////////////////////////////
public void OnItemClickListener(OnItemClickListener listener)
{
mListener = listener;
}
////////////////////////////////////////////////////////////////////////////////////////////////
public Patients getPatientAt(int pos)
{
return mPatientList.get(pos);
}
}
/////// Взрослый класс
Adult class
public class AdultsActivity extends AppCompatActivity {
private EditText nameEditText;
private EditText ageEditText;
private EditText genderEditText;
private EditText clinicEditText;
private boolean editMode;
private int mID;
public static final String EXTRA_ID = "com.example.demonote.extraid";
public static final String EXTRA_ADULTS = "com.example.demonote.extraadults";
public static final String EXTRA_NAME = "com.example.demonote.name";
public static final String EXTRA_AGE = "com.example.demonote..age";
public static final String EXTRA_GENDER = "com.example.demonote.gender";
public static final String EXTRA_CLINIC = "com.example.demonote.clinic";
public static final String EXTRA_DEV_HISTORY = "com.example.demonote.history";
public static final String EXTRA_GESTAGE = "com.example.demonote.gestage";
//view Model fo add new word Activity
private AdultsViewModel mViewModel;
////////////////////////////////////////////////////////////////////////////////////////////////
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adults);
nameEditText = findViewById(R.id.edit_text_name);
ageEditText = findViewById(R.id.edit_text_age);
genderEditText = findViewById(R.id.edit_text_gender);
clinicEditText = findViewById(R.id.edit_text_clinic);
// getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_exit);
//----------------------------------------------------------------------------------------//
Intent i = getIntent();
if(i.hasExtra(EXTRA_ID))
{
//Update Info
setTitle("Edit Adult Info");
editMode = true;
mID = i.getIntExtra(EXTRA_ID, -1);
nameEditText.setText(i.getStringExtra(EXTRA_NAME).toString());
ageEditText.setText(i.getStringExtra(EXTRA_AGE));
genderEditText.setText(i.getStringExtra(EXTRA_GENDER));
clinicEditText.setText(i.getStringExtra(EXTRA_CLINIC));
}else{
//insert new patient
setTitle("Add new Adult patient");
editMode = false;
}
//----------------------------------------------------------------------------------------//
mViewModel = ViewModelProviders.of(this).get(AdultsViewModel.class);
}
///// педии и обследования такие же, как для взрослых, с некоторыми отличиями в количестве editText