Hello, 나나's world !

Fragment의 RecyclerView 에서 Fragment로 데이터 전달하기 본문

💚 Android

Fragment의 RecyclerView 에서 Fragment로 데이터 전달하기

Nana0 2021. 1. 20. 06:08

 

 

 

 

Fragment 안의 dialogFragment를 만들어주었고,  dialogFragment안의 RecyclerView 의 아이템값을 선택하면 Fragment 의 imageView가 실시간으로 바뀌는것을 해보았다.

 

 

interface를 이용하여 값을 넘겨 줄건데 여기서 삽질을 하였다.

  •  다이얼로그에서 interface를 선언해주어 onClick 할때 (확인 버튼을 눌렀을때) 값을 넘겨줄 것인가? 

           -> Adapter에서 처리하여 실시간으로 바꿀것이다!

 

            1. Adapter의 생성자에 Fragment를 선언해준다.  

            2. 리소스값의 배열을 전역변수로 선언해준다.     

            3. 변수 하나를 선언하여 position값을 전역변수 배열값에 넣어준다.

            4. Fragment에  메소드로 변수를 넘겨준다.

            5. Fragment에서 받는다.

 

 

 

이제 이 과정을 코드로 보겠다.

 

 

1.

    public LetterPaperAdapter(Context context, ArrayList<LetterPaper> letterPaperItemList, LetterWriteFragment letterWriteFragment){
        this.context = context;
        this.letterPaperItemList = letterPaperItemList;
        this.letterWriteFragment = letterWriteFragment;
    }

 

2.

    public static int[] LETTER_PAPAER_ARRAY = {
            R.drawable.paper1,
            R.drawable.paper2,
            R.drawable.paper3,
            R.drawable.paper4,
            R.drawable.paper5
    };

 

3,4

  public class ViewHolder extends RecyclerView.ViewHolder {

        public ImageView paperImage;


        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            paperImage = itemView.findViewById(R.id.letter_paper_icon);

            //리소스값 바로 받아서 실시간으로 뿌려주기
            paperImage.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    id = Define.LETTER_PAPAER_ARRAY[getAdapterPosition()];
                    letterWriteFragment.setLetterPaper(id);
                }
            });
        }

    }

 

5.

   //편지지 설정. 이미지뷰에 뿌려주기
    public void setLetterPaper(int id) {
        mBackgound.setImageResource(id);
    }

 

 

 

 


<개발환경>

java version "1.8.0_271"

android API 10.0.0+ (R)

android studio "4.0.1"

 

 

 

Comments