Как я могу позволить элементу перейти к своему источнику, когда по нему щелкнули? - PullRequest
0 голосов
/ 10 июля 2020

доброе утро, я работаю над проектом блокнота, который имеет четыре действия: первое действие под названием 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

...