안드로이드 리사이클러뷰 - 액티비티 - 리사이클러뷰 시 오류

조회수 2671회

A 리사이클러뷰에서 이벤트발생시 B리사이클러뷰의 이미지를 변경하는건대 이부분에서 오류가나네요.

로직은 이렇습니다. A - 액티비티 - B 리사이클러뷰 입니다.

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: jerry.apptest.myclair, PID: 18802
                  java.lang.NullPointerException: Attempt to read from field 'android.view.View android.support.v7.widget.RecyclerView$ViewHolder.itemView' on a null object reference
                      at jerry.apptest.myclair.SoundSelectActivity.onClickSound_disable(SoundSelectActivity.java:309)
                      at jerry.apptest.adapter.SoundChannel_Compact_Adapter$ViewHolder.onClick(SoundChannel_Compact_Adapter.java:109)
                      at android.view.View.performClick(View.java:4811)
                      at android.view.View$PerformClick.run(View.java:20136)
                      at android.os.Handler.handleCallback(Handler.java:815)
                      at android.os.Handler.dispatchMessage(Handler.java:104)
                      at android.os.Looper.loop(Looper.java:194)
                      at android.app.ActivityThread.main(ActivityThread.java:5546)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:967)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

SoundSelectActivity.java:309

    @Override
    public void onClickSound_disable(int position) {

        ProgressBar sound_progres;
        sound_progres = (ProgressBar) mRecyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.sound_progress);
        if(mSoundlist.get(position).getismutte()){
            sound_progres.setProgressDrawable(SoundSelectActivity.this.getResources().getDrawable(R.drawable.circularprogress_disable));
            mSoundlist.get(position).setismutte(false);
        }else{
            sound_progres.setProgressDrawable(SoundSelectActivity.this.getResources().getDrawable(R.drawable.circularprogress));
            mSoundlist.get(position).setismutte(true);
        }
    }

SoundChannel_compact_Adapter.java:109

                case R.id.sound_progress_compact:
                    Toast.makeText(context,"this "+position,Toast.LENGTH_SHORT).show();
                    sound_progress_compact.setProgressDrawable(context.getResources().getDrawable(R.drawable.circularprogress_disable));
                    ClickInterface.onClickSound_disable(position);
                    break;

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 예상은 하시겠지만 itemView 부분이 null인것으로 추측되네요 itemView 를 생성하는 부분을 쫓아가서 디버깅 해봐야 할것 같습니다.

    itemView 뷰가 생성이 되었는지 로그를 찍어봐서 확인해볼 필요가 있습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)