0

내가 값 "편집 클래스는 ..."ListView를 :이 방법은 다음의 방법에 의해 불려안드로이드 ListView에 어댑터 뷰 AdapterView Null 포인터 예외

public void editClassOptionPressed(AdapterView<?> parent,int position,ArrayList<Class>classesArrayList){ 
    //The line below throws the null pointer exception 
    parent.getChildAt(position).setBackgroundColor(Color.BLUE); 
    Toast.makeText(getApplicationContext(), "Please Select Class To Edit...",Toast.LENGTH_LONG).show(); 
    setEditListener(classesArrayList, adapter); 
} 

선택한 경우 다음과 같은 방법을 호출 한 이는 내에서 OnCreate 방법이라고 차례 :

지금까지 디버깅 한 것을, 부모 자체가 null이지만 부모가 그 위치에 아이를 등록하지 않는 것 같습니다에서
public void setDefaultListener(final ArrayList<Class>classesArrayList){ 
    ListView lv = getListView(); 
    lv.setTextFilterEnabled(true); 
    lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     if(position==(classesArrayList.size()-3)){ 
      Intent intent = new Intent(ClassView.this, AddNewClassView.class); 
      startActivity(intent); 
     } 
     else if(position==(classesArrayList.size()-1)){ 
      deleteClassOptionPressed(parent,position); 
     } 
     else if(position==(classesArrayList.size()-2)){ 
      **editClassOptionPressed(parent, position, classesArrayList);** 
     } 
     else{ 
      Intent intent = new Intent(ClassView.this, GradeView.class); 
      intent.putExtra("selectedClassName",((TwoLineListItem)view).getText1().getText()); 
      startActivity(intent); 
     } 
     } 
    }); 
} 

. 또한 ListView에서 특정 수 이상의 항목이있을 때만 발생한다고 지적해야합니다. 누구든지 아이디어가 있습니까? 다음은 로그 캣 출력입니다!

06-26 18:31:23.373: E/AndroidRuntime(1243): FATAL EXCEPTION: main 
06-26 18:31:23.373: E/AndroidRuntime(1243): java.lang.NullPointerException 
06-26 18:31:23.373: E/AndroidRuntime(1243): athellolistview.com.ClassView.editClassOptionPressed(ClassView.java:112) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at hellolistview.com.ClassView$4.onItemClick(ClassView.java:266) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at android.widget.AdapterView.performItemClick(AdapterView.java:292) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at android.widget.AbsListView.performItemClick(AbsListView.java:1058) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2514) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at android.widget.AbsListView$1.run(AbsListView.java:3168) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at android.os.Handler.handleCallback(Handler.java:605) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at android.os.Handler.dispatchMessage(Handler.java:92) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at android.os.Looper.loop(Looper.java:137) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at java.lang.reflect.Method.invoke(Method.java:511) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-26 18:31:23.373: E/AndroidRuntime(1243):  at dalvik.system.NativeStart.main(Native Method) 
+1

때마다 앱 충돌, 당신이 게시해야한다을 logcat 오류. 그리고 NPE를 사용하면 logcat이 에러가 발생한 정확한 줄을 알려줍니다 ... – Sam

+1

'getChild()'를 피하고 부모와 위치 대신'editClassOptionPressed()'에'View view'를 직접 전달하는 것이 어떻겠습니까? ? – Geobits

+0

이것은 나를 위해 일했습니다. 고마워요. 나는 아직도 나의 방법이 그러나하지 않은 이유에 관해서는 흥미 롭다. –

답변

0

위치 = childPosition

이 문제에 도움이 ExpandableListView, 사용을 고려해야합니다 아마

:

int childPosition = ExpandableListView.getPackedPositionChild(position);