user1822729
user1822729

Reputation: 813

Android - ArrayAdapter not working - NullPointerException

I have an Activity which has a listview. The listview is populated using an arrayAdapter. The array Adapter is called from the Activity. The activity passes an arrayList of object to the adapter. When I execute the Activity I get the null pointer exception. Could you please guide to the point where it needs correction.

public class OpenTicketList extends Activity  implements  OnItemClickListener{  
private Bundle basket;
private AdapterTicketList adapterTicketList;
private List<Ticket> openTicketList;
private ListView listView;

@TargetApi(9)
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
     Log.i("OpenTicket","on create"); 
     setContentView(R.layout.openticketlist);
     catchBasket(); 
     initialize();  
 }   

//---------------------------------------------------------------------------------------------------------------------
//---To initialize , Bind the widgets and create Tabs
//--------------------------------------------------------------------------------------------------------------------- 
private void initialize() {     
    listView=(ListView)findViewById(R.id.lvOpenTicketList);

    POJO_Ticket pojo_Ticket; 
    ArrayList<POJO_Ticket> ticketArray;
    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)); 
     }
        adapterTicketList=new AdapterTicketList(this, ticketArray);
        listView.setAdapter(adapterTicketList);
        listView.setOnItemClickListener(this);    
}
//---------------------------------------------------------------------------------------------------------------------
//---To catch the values from the calling Activity
//---------------------------------------------------------------------------------------------------------------------
private void catchBasket() {
    // TODO Auto-generated method stub
    basket = getIntent().getExtras(); 
    openTicketList = (List<Ticket>) basket.getSerializable("ticket");  
}  

}

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 23:01:55.287: E/AndroidRuntime(7791): FATAL EXCEPTION: main
01-08 23:01:55.287: E/AndroidRuntime(7791): android.content.res.Resources$NotFoundException: String resource ID #0x11
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.content.res.Resources.getText(Resources.java:247)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.TextView.setText(TextView.java:3495)
01-08 23:01:55.287: E/AndroidRuntime(7791): at com.example.restaurent.AdapterTicketList.getView(AdapterTicketList.java:52)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.AbsListView.obtainView(AbsListView.java:2040)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.ListView.makeAndAddView(ListView.java:1772)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.ListView.fillDown(ListView.java:672)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.ListView.fillFromTop(ListView.java:732)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.ListView.layoutChildren(ListView.java:1625)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.AbsListView.onLayout(AbsListView.java:1870)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.View.layout(View.java:11418)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.ViewGroup.layout(ViewGroup.java:4328)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1652)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1641)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.onLayout(LinearLayout.java:1417)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.View.layout(View.java:11418)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.ViewGroup.layout(ViewGroup.java:4328)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1652)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1510)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.onLayout(LinearLayout.java:1415)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.View.layout(View.java:11418)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.ViewGroup.layout(ViewGroup.java:4328)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.FrameLayout.onLayout(FrameLayout.java:443)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.View.layout(View.java:11418)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.ViewGroup.layout(ViewGroup.java:4328)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1652)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1510)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.LinearLayout.onLayout(LinearLayout.java:1415)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.View.layout(View.java:11418)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.ViewGroup.layout(ViewGroup.java:4328)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.widget.FrameLayout.onLayout(FrameLayout.java:443)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.View.layout(View.java:11418)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.ViewGroup.layout(ViewGroup.java:4328)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.os.Handler.dispatchMessage(Handler.java:99)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.os.Looper.loop(Looper.java:137)
01-08 23:01:55.287: E/AndroidRuntime(7791): at android.app.ActivityThread.main(ActivityThread.java:4441)
01-08 23:01:55.287: E/AndroidRuntime(7791): at java.lang.reflect.Method.invokeNative(Native Method)
01-08 23:01:55.287: E/AndroidRuntime(7791): at java.lang.reflect.Method.invoke(Method.java:511)
01-08 23:01:55.287: E/AndroidRuntime(7791): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-08 23:01:55.287: E/AndroidRuntime(7791): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-08 23:01:55.287: E/AndroidRuntime(7791): at dalvik.system.NativeStart.main(Native Method)

Upvotes: 2

Views: 4421

Answers (3)

akkilis
akkilis

Reputation: 1934

your listview must be null. Are you using the right layout file in your activity?

or your adapterTicketList is still null.

Upvotes: 1

m0skit0
m0skit0

Reputation: 25873

Looks like listView is null. Put a breakpoint at listView.setAdapter(adapterTicketList); and check what's listView value.

Make sure you're importing the right R file and clean your project.

Upvotes: 1

Booger
Booger

Reputation: 18725

Your error is at: OpenTicketList.java:67 Looks to me like your "openTicketList" doesn't have any content.

Hard to know for sure what your problem is, but you are trying to reference an object that hasn't be instantiated yet at this point.

Upvotes: 0

Related Questions