0

배열 어댑터를 사용하여 목록보기를 채우려고합니다. POJO 클래스에서 배열 어댑터에 이르는 객체의 배열 목록을 만듭니다. 객체의 arraylist를 전달하여 arrayadapter 클래스를 인스턴스화하려고하면 SETADAPTER 행을 실행하는 동안 null 포인터 예외가 발생합니다.배열 어댑터가 작동하지 않습니다.

날이

private void initialize() {  
    listView=(ListView)findViewById(R.id.lvOpenTicketList); 

    POJO_Ticket pojo_Ticket; 
    ArrayList<POJO_Ticket> ticketArray = new ArrayList<POJO_Ticket>(); 

    for(int i=0;i<openTicketList.size();i++){ 
     pojo_Ticket = new POJO_Ticket(openTicketList.get(i)); 
     ticketArray.add(pojo_Ticket);  
     Log.i("OpenTicket","i = " + Integer.toString(i)); 
    } 
     Log.i("OpenTicket","ticketArray " + ticketArray.size()); 


     adapterTicketList=new AdapterTicketList(this, ticketArray); 
     listView.setAdapter(adapterTicketList); 
     listView.setOnItemClickListener(this);  
} 

public class AdapterTicketList extends ArrayAdapter<POJO_Ticket> { 
Context context; 
ArrayList<POJO_Ticket> ticketArray; 
LayoutInflater vi; 

public AdapterTicketList(Context context , ArrayList<POJO_Ticket> ticketArray) {  
    super(context, 0, ticketArray);  
    this.ticketArray = new ArrayList<POJO_Ticket>();  
    this.ticketArray.addAll(ticketArray); 
    this.context =context; 
    Log.i("AdapterTicketList"," ticket id : " + ticketArray.get(0).getTicketObject().getId()); 
    vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

private class ViewHolder { 
    TextView tvTicketID; 
    TextView tvCreationHour; 
    TextView tvTableNumber; 
    TextView tvAmount;  
    } 

public View getView(final int position, View convertView, ViewGroup parent) {  
    ViewHolder holder;  
    if (convertView == null) { 
     holder = new ViewHolder();     
     convertView = vi.inflate(R.layout.rowticket, null); 
     holder.tvTicketID = (TextView) convertView.findViewById(R.id.tvTicketID); 
     holder.tvCreationHour = (TextView) convertView.findViewById(R.id.tvCreationHour); 
     holder.tvTableNumber = (TextView) convertView.findViewById(R.id.tvTableNumber); 
     holder.tvAmount = (TextView) convertView.findViewById(R.id.tvQuantity); 
     convertView.setTag(holder); 
    } else { 
     holder = (ViewHolder) convertView.getTag(); 
    }  
    Log.i("AdapterTicketList"," ticket id : " + ticketArray.get(position).getTicketObject().getId()); 
    holder.tvTicketID.setText(ticketArray.get(position).getTicketObject().getId()) ; 
    holder.tvCreationHour.setText(ticketArray.get(position).getTicketObject().getCreationHour()) ; 
    holder.tvTableNumber.setText(ticketArray.get(position).getTicketObject().getTableNumber()) ; 
    holder.tvAmount.setText(Double.toString(ticketArray.get(position).getTicketObject().getTotalAmount())) ; 
    return convertView; 
    } 

}

01-08 22:11:13.707: W/dalvikvm(7284): threadid=1: thread exiting with uncaught exception (group=0x2b542210) 
01-08 22:11:13.717: E/AndroidRuntime(7284): FATAL EXCEPTION: main 
01-08 22:11:13.717: E/AndroidRuntime(7284): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.restaurent/com.example.restaurent.OpenTicketList}: java.lang.NullPointerException 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.app.ActivityThread.access$600(ActivityThread.java:127) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.os.Looper.loop(Looper.java:137) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.app.ActivityThread.main(ActivityThread.java:4441) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at java.lang.reflect.Method.invokeNative(Native Method) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at java.lang.reflect.Method.invoke(Method.java:511) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at dalvik.system.NativeStart.main(Native Method) 
01-08 22:11:13.717: E/AndroidRuntime(7284): Caused by: java.lang.NullPointerException 
01-08 22:11:13.717: E/AndroidRuntime(7284): at com.example.restaurent.OpenTicketList.initialize(OpenTicketList.java:67) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at com.example.restaurent.OpenTicketList.onCreate(OpenTicketList.java:48) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.app.Activity.performCreate(Activity.java:4465) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
01-08 22:11:13.717: E/AndroidRuntime(7284): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 
01-08 22:11:13.717: E/AndroidRuntime(7284): ... 11 more 
+0

이 로그 캣 오류를 게시하시기 바랍니다 ... 현재 레이아웃이 ID lvOpenTicketList으로 목록보기가없는 것을 의미한다. 하지만 그것은'listView' null이되도록 현재 레이아웃에 ID가'lvOpenTicketList' 인 ListView가 없다는 것을 의미합니다 ... – Sam

+0

하지만 어댑터에 객체를 공급합니다 ... 크기 (ticketArray .크기());) 40으로 표시되었습니다. 문제는 arrayadapter – user1822729

+0

의 getView에 있어야합니다. NullPointerException은 널 변수 (이 경우 null.setAdapter())에서 메소드 또는 멤버를 참조하려고한다는 것을 의미합니다. 따라서'setContentView()'(또는 유사한 메소드)에 전달한 레이아웃을 게시하십시오. – Sam

답변

1
Caused by: java.lang.NullPointerException 
    at com.example.restaurent.OpenTicketList.initialize(OpenTicketList.java:67) 

NullPointerException이 당신이 널에서하는 방법 또는 멤버를 참조하려고했음을 의미 해결하기 위해 인도하십시오 이 경우에는 null.setAdapter()입니다.

은 그래서

관련 문제