MainActivity.java 파일에

// 내가 실행한 액티비티로부터 데이터를 다시 받아올때 작성하는 코드
    public ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
        @Override
        public void onActivityResult(ActivityResult result) {
            if (result.getResultCode() == RESULT_OK) {
                int index = result.getData().getIntExtra("index", 0);
                Employee employee = (Employee) result.getData().getSerializableExtra("employee");
                employeeList.set(index, employee);
                adapter.notifyDataSetChanged();
            }
        }
    });

ActivityResultLauncher를 만들고 onActivityResult안에 원하는 코드를 작성한다.

 

EmployeeAdapter.java 파일에

cardView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int index = getAdapterPosition();

                    Employee employee = employeeList.get(index);

                    Intent intent = new Intent(context, EditActivity.class);

                    intent.putExtra("employee", employee);
                    intent.putExtra("index", index);
                    //context.startActivity(intent);
                    ((MainActivity) context).activityResultLauncher.launch(intent);
                }
            });

카드뷰 클릭할 때 activityResultLancher를 통해서 실행시킨다.

EditActivity가 데이터를 받고 finish하면 MainActivity가 데이터를 받는다.

+ Recent posts