title: How to set ScrollView in Activity with Multiple ListView(s)?
body: <p>This is my actual Activity :
  <img src="https://i.stack.imgur.com/zAuyz.png" alt="enter image description here"></p>
  
  <p>In this Activity I set All the ListView(s) dynamically and programmatically.
  As you can see, the problem I have is The 1st ListView takes the place she needs 
  and the second ListView try to keep showing by internally adding a scroll bar..</p>
  
  <p>I just wanted to know how can I say programmatically to let all the ListView(s) take 
  the entire place she needs and just add a ScrollBar to all the activity (To Scroll the Menu for example)?</p>
  
  <p>Here is my Activity and my Adapter :</p>
  
  <pre><code>public class SousBoissonsActivity extends Activity {
      private String nom_categorie;
      private ArrayList&lt;String&gt; arraySousCategoriesName;
      private ArrayList&lt;ArrayList&lt;Drink&gt;&gt; arraySousCategories;
      private ArrayList&lt;MyAdapter&gt; myAdapters;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_sousboissons_list_item);
  
          nom_categorie = getIntent().getStringExtra("nom_categorie");
          setTitle(nom_categorie);
          DrinksContainer.setSousCategoriesNameArray(nom_categorie);
          DrinksContainer.setSousCategoriesArray(nom_categorie);
  
          arraySousCategories = DrinksContainer.sousCategoriesArray;
          myAdapters = new ArrayList&lt;MyAdapter&gt;();
  
          new DoDirtyJobAsyncTask().execute();
      }
  
      @Override
      protected void onResume() {
          super.onResume();
      }
  
      @Override
      protected void onDestroy() {
          super.onDestroy();
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          return super.onOptionsItemSelected(item);
      }
  
      private class DoDirtyJobAsyncTask extends AsyncTask&lt;Void, MyAdapter, Void&gt; {
          @Override
          protected Void doInBackground(Void... params) {
              for (ArrayList&lt;Drink&gt; arrayElement : arraySousCategories) {
                  MyAdapter myAdapter = new MyAdapter(getApplicationContext(),
                          arrayElement);
                  myAdapters.add(myAdapter);
                  publishProgress(myAdapter);
              }
              return null;
          }
  
          @Override
          protected void onProgressUpdate(MyAdapter... myAdapters) {
              int currViewId = 1;
              LinearLayout ll = (LinearLayout) findViewById(R.id.sousboissons_linearlayout);
              for (MyAdapter myAdapter : myAdapters) {
                  TextView sousCategorieTitle = new TextView(
                          getApplicationContext(), null);
                  sousCategorieTitle.setText(myAdapter.sousCategory);
  
                  sousCategorieTitle.setBackgroundColor(getResources().getColor(
                          R.color.green));
                  sousCategorieTitle.setTextSize(19);
                  sousCategorieTitle.setTextColor(getResources().getColor(
                          R.color.white));
                  sousCategorieTitle.setGravity(Gravity.CENTER);
                  LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                          LinearLayout.LayoutParams.FILL_PARENT,
                          LinearLayout.LayoutParams.WRAP_CONTENT);
                  layoutParams.setMargins(0, 0, 0, 0);
                  sousCategorieTitle.setLayoutParams(layoutParams);
  
                  ListView listview = new ListView(getApplicationContext(), null);
                  listview.setId(currViewId);
                  listview.setAdapter(myAdapter);
                  LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(
                          LinearLayout.LayoutParams.FILL_PARENT,
                          LinearLayout.LayoutParams.FILL_PARENT);
                  layoutParams2.setMargins(17, 0, 17, 0);
                  listview.setLayoutParams(layoutParams2);
  
                  ll.setPadding(15, 15, 15, 0);
                  ll.addView(sousCategorieTitle);
                  ll.addView(listview);
                  currViewId++;
              }
          }
  
      }
  
      class MyAdapter extends ArrayAdapter&lt;Drink&gt; {
          LayoutInflater inflat;
          private ArrayList&lt;Drink&gt; items;
          private String sousCategory;
  
          public MyAdapter(Context context, ArrayList&lt;Drink&gt; objects) {
              super(
                      context,
                      R.layout.activity_sousboissons_list_item_elementsouscategorie,
                      objects);
              this.items = objects;
              this.inflat = LayoutInflater.from(context);
              this.sousCategory = objects.get(0).getType();
          }
  
          private class ViewHolder {
              public TextView title;
              public TextView prix;
              public TextView desc;
              public TextView size;
              public ImageView img;
              public LinearLayout ll;
          }
  
          @Override
          public View getView(int position, View convertView, ViewGroup parent) {
              String currentKey = "";
              String keyDialog = "";
              ViewHolder holder = null;
              Drink element = items.get(position);
  
              // Instantiate Labels and Design
              if (convertView == null) {
                  holder = new ViewHolder();
                  convertView = inflat
                          .inflate(
                                  R.layout.activity_sousboissons_list_item_elementsouscategorie,
                                  null);
  
                  holder.title = (TextView) convertView
                          .findViewById(R.id.sousboissons_element_title);
                  holder.desc = (TextView) convertView
                          .findViewById(R.id.sousboissons_element_desc);
                  holder.prix = (TextView) convertView
                          .findViewById(R.id.sousboissons_element_prix);
                  holder.size = (TextView) convertView
                          .findViewById(R.id.sousboissons_element_size);
  
                  if (element.getPrice().size() &gt; 1) {
                      holder.ll = (LinearLayout) convertView
                              .findViewById(R.id.sousboissons_element_firt_layout);
                      holder.img = new ImageView(getApplicationContext(), null);
  
                      LinearLayout.LayoutParams layoutParams1 = new LinearLayout.LayoutParams(
                              LinearLayout.LayoutParams.WRAP_CONTENT,
                              LinearLayout.LayoutParams.WRAP_CONTENT);
                      layoutParams1.weight = 12;
                      holder.title.setLayoutParams(layoutParams1);
  
                      LinearLayout.LayoutParams layoutParams2 = new LinearLayout.LayoutParams(
                              LinearLayout.LayoutParams.WRAP_CONTENT,
                              LinearLayout.LayoutParams.WRAP_CONTENT);
                      layoutParams2.gravity = Gravity.RIGHT;
                      layoutParams2.weight = 1;
                      holder.img.setLayoutParams(layoutParams2);
                      holder.img.setImageResource(R.drawable.arrow);
                      holder.img.setPadding(0, 15, 0, 4);
  
                      // Alert Dialog
                      final LinearLayout alertDialogLayout = new LinearLayout(
                              SousBoissonsActivity.this);
                      ArrayList&lt;Dictionary&gt; dico = element.getPrice();
                      ListView liste = new ListView(SousBoissonsActivity.this);
                      MyAdapterDialog adapt = new MyAdapterDialog(
                              SousBoissonsActivity.this, element.getPrice());
                      liste.setAdapter(adapt);
                      alertDialogLayout.addView(liste);
                      final AlertDialog.Builder alert = new AlertDialog.Builder(
                              SousBoissonsActivity.this);
                      alert.setTitle(element.getName());
                      alert.setCancelable(true);
                      alert.setPositiveButton("Retour",
                              new DialogInterface.OnClickListener() {
                                  public void onClick(DialogInterface dialog,
                                          int id) {
                                      dialog.dismiss();
                                  }
                              });
                      alert.setView(alertDialogLayout);
  
                      holder.img.setOnClickListener(new OnClickListener() {
                          @Override
                          public void onClick(View v) {
                              if (alertDialogLayout.getParent() != null)
                                  ((ViewGroup) alertDialogLayout.getParent())
                                          .removeView(alertDialogLayout);
                              alert.show();
                          }
                      });
                      holder.ll.addView(holder.img);
                  } else {
                  }
                  convertView.setTag(holder);
              } else {
                  holder = (ViewHolder) convertView.getTag();
              }
  
              // Setting Data on Labels
              if (element != null) {
                  holder.title.setText(element.getName());
                  holder.desc.setText(element.getDescription());
  
                  if (element.getPrice().size() &gt; 1) {
                      holder.prix.setVisibility(View.GONE);
                      holder.size.setVisibility(View.GONE);
                  } else {
                      Dictionary dico = element.getPrice().get(0);
                      Enumeration e = dico.keys();
                      while (e.hasMoreElements()) {
                          currentKey = (String) e.nextElement();
                      }
                      if (currentKey.equalsIgnoreCase("0")) {
                          holder.size.setVisibility(View.GONE);
                          holder.prix
                                  .setText((String) dico.get(currentKey) + "€");
                      } else {
                          holder.prix
                                  .setText((String) dico.get(currentKey) + "€");
                          holder.size.setText(currentKey + "cl");
                      }
                  }
              }
              return convertView;
          }
      }
  </code></pre>