title: Cannot add headers in a listview Android
body: <p>I call on the OnCreate method the following method setupAdapter();</p>
  
  <pre><code>  private void setupAdapter() {
  
      // set the list adapter
      JSONArray returnArray = null;
      try {
          returnArray = getQuickViewContents();
      } catch (JSONException e) {
          e.printStackTrace();
      }
  
      JSONObject obj0 = null;
      if (returnArray != null) {
          try {
              obj0 = returnArray.getJSONObject(0);
  
          } catch (JSONException e) {
              e.printStackTrace();
  
          }
      }
      try {
          getCreditCardDetails();
      } catch (JSONException e3) {
          e3.printStackTrace();
      }
  
      JSONArray productArray = null;
      try {
          productArray = obj0.getJSONArray("Content");
      } catch (JSONException e2) {
          e2.printStackTrace();
      }
  
      ArrayList&lt;HashMap&lt;String, String&gt;&gt; productList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
  
  
      if (productArray != null) {
  
          ListView lv = (ListView) findViewById(android.R.id.list);
  
          for (int i = 0; i &lt; productArray.length(); i++) {
  
              // creating new HashMap
              HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
  
              // adding each child node to HashMap
              try {
                  map.put(KEY_BRAND,
                          productArray.getJSONObject(i).getString("Brand"));
                  map.put(KEY_QUANTITY_NAME, productArray.getJSONObject(i)
                          .getString("Quantity")
                          + " X "
                          + productArray.getJSONObject(i).getString("Name"));
                  map.put(KEY_PRICE, Currency.britishPound
                          + productArray.getJSONObject(i)
                                  .getString("MinCost"));
              } catch (JSONException e) {
                  e.printStackTrace();
              }
  
              // adding HashList to ArrayList
              productList.add(map);
  
  
              adapter = new APIQuickCheckoutProductProvider(APIQuickCheckout.this, productList);
              lv.addHeaderView(headerMethod());
  
  
              lv.setAdapter(adapter);
              adapter.notifyDataSetChanged();
  
          }
      }
  }
  
  private View headerMethod() {
  
      View header = getLayoutInflater().inflate(R.layout.api_quick_checkout_header, null);
      card_cvv = (EditText) header.findViewById(R.id.api_quick_checkout_card_cvv);
  
      Button edit_payment_details = (Button) header.findViewById(R.id.edit_button_payment);
      edit_payment_details.setOnClickListener(new OnClickListener() {
  
          @Override
          public void onClick(View v) {
              final Intent i = new Intent(APIQuickCheckout.this,APIPaymentDetails.class);
              startActivity(i);
          }
      });
  
      // set the payment info layout
      TextView card_number = (TextView) header.findViewById(R.id.api_quick_checkout_card_number);
      TextView card_expiry = (TextView) header.findViewById(R.id.api_quick_checkout_card_expiry);
      try {
          card_number.setText(CheckoutManager.getInstance().getSelectedPaymentCard().getString("cardNumber"));
          card_expiry.setText(CheckoutManager.getInstance().getSelectedPaymentCard().getString("expDate"));
      } catch (Exception e1) {
          e1.printStackTrace();
      }
  
      return header;
  
  }
  </code></pre>
  
  <p>And the Stack Trace</p>
  
  <pre><code> 12-24 17:31:17.805: E/AndroidRuntime(31051): FATAL EXCEPTION: main
   12-24 17:31:17.805: E/AndroidRuntime(31051): java.lang.RuntimeException: Unable to start     activity ComponentInfo{apicheckout.APIQuickCheckout}: java.lang.IllegalStateException:   Cannot add header view to list -- setAdapter has already been called.
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.app.ActivityThread.access$1500(ActivityThread.java:117)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.os.Handler.dispatchMessage(Handler.java:99)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.os.Looper.loop(Looper.java:130)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.app.ActivityThread.main(ActivityThread.java:3683)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at java.lang.reflect.Method.invokeNative(Native Method)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at java.lang.reflect.Method.invoke(Method.java:507)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at dalvik.system.NativeStart.main(Native Method)
   12-24 17:31:17.805: E/AndroidRuntime(31051): Caused by: java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.widget.ListView.addHeaderView(ListView.java:279)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.widget.ListView.addHeaderView(ListView.java:302)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at apicheckout.APIQuickCheckout.setupAdapter(APIQuickCheckout.java:192)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at apicheckout.APIQuickCheckout.onCreate(APIQuickCheckout.java:121)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
   12-24 17:31:17.805: E/AndroidRuntime(31051):   ... 11 more
  </code></pre>
  
  <p>All I want to do is to add as header the content of the headerMethod. What am I doing wrong?</p>