[Android] RecyclerView 클릭 이벤트

Study/Android Studio 2021. 1. 28. 00:21 Posted by meanoflife
반응형

RecyclerView 아이템을 클릭하여 동작 수행

 

Adapter의 ItemViewHolder에서 OnClickListener 사용

class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    private TextView textView1;
    private TextView textView2;
    private ImageView imageView;
    private Data data;

    ItemViewHolder(View itemView) {
        super(itemView);

        textView1 = itemView.findViewById(R.id.textView1);
        textView2 = itemView.findViewById(R.id.textView2);
        imageView = itemView.findViewById(R.id.imageView);
    }

    void onBind(Data data) {
        this.data = data;

        textView1.setText(data.getTitle());
        textView2.setText(data.getContent());
        imageView.setImageResource(data.getResId());

        itemView.setOnClickListener(this);
        textView1.setOnClickListener(this);
        textView2.setOnClickListener(this);
        imageView.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.linearItem:
                Toast.makeText(context, "TITLE : " + data.getTitle() + "\nContent : " + data.getContent(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.textView1:
                Toast.makeText(context, data.getTitle(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.textView2:
                Toast.makeText(context, data.getContent(), Toast.LENGTH_SHORT).show();
                break;
            case R.id.imageView:
                Toast.makeText(context, data.getTitle() + " 이미지 입니다.", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

- Activity나 Fragment 등에서 OnClickListener를 사용하듯이 View에 OnClickListener를 연결하여 사용합니다.

- Item 전체 클릭시 ItemViewHolder의 생성자에서 받아온 itemView를 이용하여 구현합니다.

- Item의 SubView에도 OnClickListener를 연결하면 각각의 Click 동작을 구현할 수 있습니다.

 

The End.

 

반응형