마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

체크박스 전체선택 도와주세요 살려주세요

0 추천
case R.id.allselect:
//                        mAdapter.setAllChecked();
                        if(mList.getCount() != 0) {
                            for (int i = 0; i < mList.getCount(); i++) {
                                LinearLayout item = (LinearLayout)mList.getChildAt(i);
                                CheckBox cb = (CheckBox)item.findViewById(R.id.cbox);
                                cb.setChecked(false);
                                mAdapter.aData.get(i).setIsChecked(true);
                            }
                        }
                        break;

                    case R.id.selectcancel:
                        for(int i=0; i<mList.getCount(); i++)
                        {
                            LinearLayout item = (LinearLayout)mList.getChildAt(i);
                            CheckBox cb = (CheckBox)item.findViewById(R.id.cbox);
                            cb.setChecked(false);
                            mAdapter.aData.get(i).setIsChecked(false);

 

이런식으로 전체선택 , 전체해제를 구현하고있는데요

   Process: com.example.exa_c22.appshipment, PID: 5285
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.widget.LinearLayout.findViewById(int)' on a null object reference
        at com.example.exa_c22.appshipment.MainActivity$1.onClick(MainActivity.java:155)
        at android.view.View.performClick(View.java:5217)
        at android.view.View$PerformClick.run(View.java:21342)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5551)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

 

이런식으로 계속 터집니다.

CheckBox cb = (CheckBox)item.findViewById(R.id.cbox);

이부분에서 자꾸터지는데 이유를 모르겠습니다. ㅠㅠ
hani429 (140 포인트) 님이 2018년 6월 10일 질문

1개의 답변

0 추천

mList.getCount() 값은 현재 ListView가 가지는 Child View 갯수보다 큽니다.

따라서 getCount()값 기준으로 getChildAt()을 시도하면 null이 리턴 될 수 있고

null reference에서 item.findViewById(R.id.cbox)를 시도하게 되면

첨부하신 exception이 발생합니다.

살려 드립니다.

디자이너정 (42,810 포인트) 님이 2018년 6월 11일 답변
...