I wanna change checkedTextView's boolean state in activity when some event occurs in adapter(Maybe RecyclerView). I thought the way using getter and setter first, but that's not good idea. So I thought listener. Is there listener can get event in adapter?
Here is my code. I didn't upload MainActivity's code cuz it is completed.
OptionActivity.java
package org.techtown.cryptoview;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckedTextView;
import java.util.ArrayList;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class OptionActivity extends AppCompatActivity {
    OptionAdapter optionAdapter = new OptionAdapter();
    RecyclerView recyclerView;
    CheckedTextView checkedTextView; 
    // This is SelectAll checkedTextView. I have to change this.
    ArrayList<CoinInfoCoinone> coinInfosCoinone = new ArrayList<CoinInfoCoinone>();
    ArrayList<CoinInfoBithumb> coinInfosBithumb = new ArrayList<CoinInfoBithumb>();
    String coinoneAddress = "https://api.coinone.co.kr/ticker?currency=all";
    String bithumbAddress = "https://api.bithumb.com/public/ticker/ALL_KRW";
    String URL = coinoneAddress;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_option);
        checkedTextView = findViewById(R.id.checkedTextView);
        Intent intent = getIntent();
        URL = intent.getExtras().getString("URL");
        checkedTextView.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                if (((CheckedTextView) view).isChecked()) {
                    checkedTextView.toggle();
                }
                else {
                    checkedTextView.toggle();
                }
                optionAdapter.selectAll(checkedTextView.isChecked());
                optionAdapter.notifyDataSetChanged();
            }
        });
        if (URL.equals(coinoneAddress))
            coinInfosCoinone = (ArrayList<CoinInfoCoinone>) intent.getSerializableExtra("coinInfosCoinone");
        if (URL.equals(bithumbAddress))
            coinInfosBithumb = (ArrayList<CoinInfoBithumb>) intent.getSerializableExtra("coinInfosBithumb");
        setData();
        init();
    }
    public void setData() {
        optionAdapter.setURL(URL);
        if (URL.equals(coinoneAddress)) {
            for (int i = 0; i < coinInfosCoinone.size(); i++) {
                if (!coinInfosCoinone.get(i).getCoinViewCheck())
                    checkedTextView.setChecked(false);
                if (i == coinInfosCoinone.size() - 1 && coinInfosCoinone.get(i).getCoinViewCheck())
                    checkedTextView.setChecked(true);
                optionAdapter.addItemCoinone(coinInfosCoinone.get(i));
            }
        }
        if (URL.equals(bithumbAddress)) {
            for (int i = 0; i < coinInfosBithumb.size(); i++) {
                if (!coinInfosBithumb.get(i).getCoinViewCheck())
                    checkedTextView.setChecked(false);
                if (i == coinInfosBithumb.size() - 1 && coinInfosBithumb.get(i).getCoinViewCheck())
                    checkedTextView.setChecked(true);
                optionAdapter.addItemBithumb(coinInfosBithumb.get(i));
            }
        }
        optionAdapter.notifyDataSetChanged();
    }
    public void init() {
        recyclerView = findViewById(R.id.recyclerView);
        LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        recyclerView.setLayoutManager(layoutManager);
        if (URL.equals(coinoneAddress))
            getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xFF0079FE));
        if (URL.equals(bithumbAddress))
            getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xFFF37321));
        recyclerView.setAdapter(optionAdapter);
    }
}
OptionAdapter.java
package org.techtown.cryptoview;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckedTextView;
import android.widget.ImageView;
import android.widget.Toast;
import java.util.ArrayList;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class OptionAdapter extends RecyclerView.Adapter<OptionAdapter.ViewHolder> {
    ArrayList<CoinInfoCoinone> coinInfosCoinone = new ArrayList<CoinInfoCoinone>();
    ArrayList<CoinInfoBithumb> coinInfosBithumb = new ArrayList<CoinInfoBithumb>();
    String coinoneAddress = "https://api.coinone.co.kr/ticker?currency=all";
    String bithumbAddress = "https://api.bithumb.com/public/ticker/ALL_KRW";
    String URL = coinoneAddress;
    public static class ViewHolder extends RecyclerView.ViewHolder {
        ImageView imageView;
        CheckedTextView checkedTextView;
        public ViewHolder(View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.imageView);
            checkedTextView = itemView.findViewById(R.id.checkedTextView);
        }
        public void setItemCoinone(CoinInfoCoinone coinInfo) {
            imageView.setImageResource(coinInfo.getCoinImageIndex());
            checkedTextView.setText(coinInfo.getCoinName().currency.toUpperCase() + " / " + coinInfo.getCoinNameKorean());
            checkedTextView.setChecked(coinInfo.getCoinViewCheck());
        }
        public void setItemBithumb(CoinInfoBithumb coinInfo) {
            imageView.setImageResource(coinInfo.getCoinImageIndex());
            checkedTextView.setText(coinInfo.getCoinNameKorean());
            checkedTextView.setChecked(coinInfo.getCoinViewCheck());
        }
    }
    public OptionAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
        View itemView = inflater.inflate(R.layout.option_item, viewGroup, false);
        return new OptionAdapter.ViewHolder(itemView);
    }
    public void onBindViewHolder(ViewHolder viewHolder, int position) {
        final int finalPosition = position;
        final boolean isChecked = viewHolder.checkedTextView.isChecked();
        // I want to change OptionActivity's selectAll checkedTextView if each item's checkedTextView's boolean state is changed to false.
        if (URL.equals(coinoneAddress)) {
            viewHolder.setItemCoinone(coinInfosCoinone.get(position));
            viewHolder.checkedTextView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    CheckedTextView checkedTextView = (CheckedTextView) view;
                    if (isChecked) {
                        checkedTextView.toggle();
                        coinInfosCoinone.get(finalPosition).setCoinViewCheck(true);
                    }
                    else {
                        checkedTextView.toggle();
                        coinInfosCoinone.get(finalPosition).setCoinViewCheck(false);
                    }
                }
            });
        }
        if (URL.equals(bithumbAddress)) {
            viewHolder.setItemBithumb(coinInfosBithumb.get(position));
            viewHolder.checkedTextView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    CheckedTextView checkedTextView = (CheckedTextView) view;
                    if (isChecked) {
                        checkedTextView.toggle();
                        coinInfosBithumb.get(finalPosition).setCoinViewCheck(true);
                    }
                    else {
                        checkedTextView.toggle();
                        coinInfosBithumb.get(finalPosition).setCoinViewCheck(false);
                    }
                }
            });
        }
    }
    public void addItemCoinone(CoinInfoCoinone coinInfo) {
        coinInfosCoinone.add(coinInfo);
    }
    public void addItemBithumb(CoinInfoBithumb coinInfo) {
        coinInfosBithumb.add(coinInfo);
    }
    public int getItemCount() {
            if (URL.equals(coinoneAddress))
                return coinInfosCoinone.size();
            else
                return coinInfosBithumb.size();
    }
    public void setURL(String URL) {
        this.URL = URL;
    }
    public void selectAll(boolean checkAll) {
        if (URL.equals(coinoneAddress)) {
            if (checkAll) {
                for (int i = 0; i < coinInfosCoinone.size(); i++) {
                    coinInfosCoinone.get(i).setCoinViewCheck(true);
                }
            }
            else {
                for (int i = 0; i < coinInfosCoinone.size(); i++) {
                    coinInfosCoinone.get(i).setCoinViewCheck(false);
                }
            }
        }
        if (URL.equals(bithumbAddress)) {
            if (checkAll) {
                for (int i = 0; i < coinInfosBithumb.size(); i++) {
                    coinInfosBithumb.get(i).setCoinViewCheck(true);
                }
            }
            else {
                for (int i = 0; i < coinInfosBithumb.size(); i++) {
                    coinInfosBithumb.get(i).setCoinViewCheck(false);
                }
            }
        }
    }
    public ArrayList<CoinInfoCoinone> getCoinInfosCoinone() {
        return coinInfosCoinone;
    }
    public ArrayList<CoinInfoBithumb> getCoinInfosBithumb() {
        return coinInfosBithumb;
    }
}
