2014-01-06 2 views
-5
나는 다음과 같은 코드를 NullPointerException 무엇입니까

,어떻게 안드로이드에서 nullpointer 예외를 해결할 수 있습니까?

package com.example.extra; 

import java.util.List; 

import com.example.dto.DriverSelectedRouteArrayList; 
import com.example.main.R; 

import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.BaseAdapter; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.TextView; 

public class CustomerAdapter extends BaseAdapter 
{ 

    DriverSelectedRouteArrayList driverSelectedRouteArrayList; 
    private List<DriverSelectedRouteArrayList> list; 
    private LayoutInflater layoutInflater; 
    Context context; 
    ViewHolder holder; 

    public CustomerAdapter(Context context, int resource, List<DriverSelectedRouteArrayList> driverData) 
    { 
     this.list = driverData; 
     this.context = context; 
     layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     View view = convertView; 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.student_list_view_itom, null); 

     if(view == null) 
     { 
      TextView textViewRouteId = (TextView) view.findViewById(R.id.srNumberTextView); 

//   convertView = layoutInflater.inflate(R.layout.student_list_view_itom, null); 
      holder = new ViewHolder(); 
      holder.srNumberTextView = (TextView) convertView.findViewById(R.id.srNumberTextView); 
      holder.nameTextView = (TextView) convertView.findViewById(R.id.textViewStudentItem); 
      holder.phoneNumberTextView = (TextView) convertView.findViewById(R.id.textViewPhoneNumber); 
      holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkBoxSelectForStudentList); 
      holder.checkBox 
          .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

           @Override 
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
           { 
            int getPosition = (Integer) buttonView.getTag(); 
            list.get(getPosition).setSelected(buttonView.isChecked()); 

           } 
          }); 
          view.setTag(holder); 
          view.setTag(R.id.checkBoxSelectForStudentList,holder.checkBox); 
          view.setTag(R.id.srNumberTextView,holder.srNumberTextView); 
          view.setTag(R.id.textViewStudentItem, holder.nameTextView); 
          view.setTag(R.id.textViewPhoneNumber, holder.phoneNumberTextView); 

     }else{ 
       holder = (ViewHolder) view.getTag(); 
      } 
     holder.checkBox.setTag(position);//error in this line 
     Log.e("get position=======>", ""+list.get(position).get_id()); 
     holder.srNumberTextView.setText(String.valueOf(list.get(position).get_id())); 
     holder.nameTextView.setText(list.get(position).getFirst_name()+" " 
            +list.get(position).getMiddle_name()+" " 
            +list.get(position).getLast_name()); 
     holder.phoneNumberTextView.setText(list.get(position).getPhone_number()); 
     holder.checkBox.setChecked(list.get(position).isSelected()); 
     return view; 
    } 

    static class ViewHolder 
    { 
     protected TextView srNumberTextView; 
     protected TextView nameTextView; 
     protected TextView phoneNumberTextView; 
     protected CheckBox checkBox; 
    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     // TODO Auto-generated method stub 
     return list.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return position; 
    } 
} 

제목 로그 캣 :

01-06 07:42:53.132: E/AndroidRuntime(3300): FATAL EXCEPTION: main 
01-06 07:42:53.132: E/AndroidRuntime(3300): Process: com.example.main, PID: 3300 
01-06 07:42:53.132: E/AndroidRuntime(3300): java.lang.NullPointerException 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at com.example.extra.CustomerAdapter.getView(CustomerAdapter.java:73) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.widget.AbsListView.obtainView(AbsListView.java:2263) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1263) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.widget.ListView.onMeasure(ListView.java:1175) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.View.measure(View.java:16497) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.widget.RelativeLayout.measureChild(RelativeLayout.java:689) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:473) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.View.measure(View.java:16497) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.View.measure(View.java:16497) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.View.measure(View.java:16497) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2291) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.View.measure(View.java:16497) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1916) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1113) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1295) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.Choreographer.doCallbacks(Choreographer.java:574) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.Choreographer.doFrame(Choreographer.java:544) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.os.Handler.handleCallback(Handler.java:733) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.os.Handler.dispatchMessage(Handler.java:95) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.os.Looper.loop(Looper.java:136) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at java.lang.reflect.Method.invoke(Method.java:515) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
01-06 07:42:53.132: E/AndroidRuntime(3300):  at dalvik.system.NativeStart.main(Native Method) 
+0

라인 73에서 무엇입니까? – Aashir

+0

CustomAdapter.java의 라인 73은 무엇입니까 – InnocentKiller

+4

** 디버깅 ** ** – Cris

답변

5

변경

holder.srNumberTextView = (TextView) view.findViewById(R.id.srNumberTextView); 

그에게 다른 뷰에 대해 동일한

합니다. convertView.findViewById 대신 view.findViewById을 사용하십시오. 당신은 당신이 체크 박스의 SetTag 전에도

int getPosition = (Integer) buttonView.getTag(); 

이 부분

경우

layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    // already initialized in the constructor of adapter class 
    // no need to initialize in getView 

당신은 밖으로

holder.checkBox.setOnCheckedChangeListener 

를 이동해야합니다.

다른 실수가있을 수 있습니다. 나는 내가 눈을 뜰 수 있다고 몇 가지 지적했다.

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 

    ViewHolder holder; 
    if(convertView == null) 
    { 

     convertView = layoutInflater.inflate(R.layout.student_list_view_itom, null); 
     holder = new ViewHolder(); 
     holder.textViewRouteId = (TextView) convertView.findViewById(R.id.srNumberTextView); 
     holder.srNumberTextView = (TextView) convertView.findViewById(R.id.srNumberTextView); 
     holder.nameTextView = (TextView) convertView.findViewById(R.id.textViewStudentItem); 
     holder.phoneNumberTextView = (TextView) convertView.findViewById(R.id.textViewPhoneNumber); 
     holder.checkBox = (CheckBox) convertView.findViewById(R.id.checkBoxSelectForStudentList); 
     convertView.setTag(holder); 

    }else{ 
      holder = (ViewHolder) convertView.getTag(); 
     } 

    // update your views here 
    return convertView; 
    } 

그런 다음

static class ViewHolder 
{ 
    protected TextView srNumberTextView,textViewRouteId; 
+0

내 코드를 변경 한 곳을 알려주십시오 .. – Nitin

+0

@Nitin에서 TextView를 선언하는 곳의 73 번 줄. – Vigbyor

+0

@Nitin XML 레이아웃의보기 ID가 Java 코드 – Raghunandan

관련 문제