title: Listview footer not displaying
body: <p>I have created a dynamic listview with lazy loading. I am trying to show a footer to the listview, so that when the user scrolls to the bottom of the listview, it will show "loading more items" (as a footer)and it will load more item.I have implemented lazy loading. I have set the the footer, but it is not getting displayed on the listview. Please help me out.</p>
  
  <p>Tabfragment class containing listview:</p>
  
  <pre><code>package com.example.abe;
  
  import java.util.ArrayList;
  
  import android.annotation.TargetApi;
  import android.app.Activity;
  import android.content.Context;
  import android.os.Build;
  import android.os.Bundle;
  import android.support.v4.app.ListFragment;
  import android.util.Log;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.AbsListView;
  import android.widget.AbsListView.OnScrollListener;
  import android.widget.ArrayAdapter;
  import android.widget.ListView;
  import android.widget.Toast;
  
  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  public class Tab1Fragment extends ListFragment {
      ListView lv;
      Activity act = this.getActivity();
      Context ct = this.getActivity();
      XMLGettersSetters data;
      boolean loadingMore = false;
      String abc[] = new String[50];
      static int count = 0;
      final int itemsPerPage = 10;
      static ArrayList&lt;String&gt; myListItems = new ArrayList&lt;String&gt;();
      ArrayList&lt;String&gt; myListItems2;
      ArrayAdapter&lt;String&gt; adapter;
      ArrayAdapter&lt;String&gt; adapter1;
  
      static int size = 0;
      int position = 0;
      int top = 0;
      static String android_array1[];
      ArrayList&lt;String&gt; myListItems3;
  
      TabsFragmentActivity t = new TabsFragmentActivity();
      String parsed[] = new String[MainActivity.Sarray1.length];
  
      @SuppressWarnings("unused")
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
  
          adapter = new ArrayAdapter&lt;String&gt;(getActivity().getBaseContext(),
                  android.R.layout.simple_list_item_1, t.myarray);
          ;
          View root = inflater.inflate(R.layout.tab_frag1_layout, container,
                  false);
          lv = (ListView) root.findViewById(android.R.id.list);
          lv.setAdapter(adapter);
          getActivity().setTitle("ABE ST count: " + t.stcount + " items");
          parsed = MainActivity.Sarray1;
          for (int j = 0; j &lt; parsed.length; j++) {
              System.out.println("sax" + parsed[j].toString());
          }
  
          return root;
      }
  
      @Override
      public void onViewCreated(View view, Bundle savedInstanceState) {
          super.onViewCreated(view, savedInstanceState);
  
          View footerView = ((LayoutInflater) this.getActivity()
                  .getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
                  R.layout.listfooter, null, false);
          lv.addFooterView(footerView);
  
          getListView().setOnScrollListener(new OnScrollListener() {
              @Override
              public void onScrollStateChanged(AbsListView view, int scrollState) {
              }
  
              @Override
              public void onScroll(AbsListView view, int firstVisibleItem,
                      int visibleItemCount, int totalItemCount) {
                  System.out.println(abc.length);
                  System.out.println(count);
                  System.out.println("First" + firstVisibleItem);
                  System.out.println("Vis" + visibleItemCount);
                  position = firstVisibleItem;
                  View v = lv.getChildAt(0);
                  top = (v == null) ? 0 : v.getTop();
                  int lastInScreen = firstVisibleItem + visibleItemCount;
                  System.out.println("Last" + lastInScreen);
                  System.out.println("Total" + totalItemCount);
                  if ((lastInScreen == totalItemCount) &amp;&amp; !(loadingMore)) {
                      if (count &lt; size) {
                          try {
                              Thread thread = new Thread(null, loadMoreListItems);
                              thread.start();
                          } catch (Exception e) {
                              e.printStackTrace();
                          }
  
                      }
  
                      else if (count != 0) {
                          Toast.makeText(getActivity().getApplicationContext(),
                                  "Complete Data", Toast.LENGTH_LONG).show();
                          int lvcnt = lv.getCount();
                          System.out.println("Adapter Count " + " " + lvcnt);
                          System.out.println("Abe adapter count" + " "
                                  + adapter.getCount());
                      }
                  }
              }
          });
          if (t.check1 == 0) {
              try {
                  Thread thread = new Thread(null, loadMoreListItems);
                  thread.start();
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      }
  
      private Runnable loadMoreListItems = new Runnable() {
          @Override
          public void run() {
              loadingMore = true;
              t.myarray1 = new ArrayList&lt;String&gt;();
              try {
                  Thread.sleep(1000);
              } catch (InterruptedException e) {
              }
              size = parsed.length;
              for (int i = 0; i &lt; itemsPerPage; i++) {
                  if (count &lt; size) {
                      t.myarray1.add(parsed[count].toString());
  
                      count = count + 1;
                      System.out.println("Count in run " + " " + count);
                  } else {
                      break;
                  }
              }
              Log.i("a", "b");
              try {
                  getActivity().runOnUiThread(returnRes);
              } catch (Exception e) {
                  e.printStackTrace();
              }
              Log.i("a", "b");
          }
      };
      private Runnable returnRes = new Runnable() {
          @Override
          public void run() {
              if (t.myarray1 != null &amp;&amp; t.myarray1.size() &gt; 0) {
                  for (int j = 0; j &lt; t.myarray1.size(); j++) {
                      adapter.add(t.myarray1.get(j));
  
                      // adapter1.add(myListItems3.get(j));
  
                  }
              }
              // setListAdapter(adapter);
              Log.i("a", "b");
              adapter.notifyDataSetChanged();
              // lv.setSelection(position);
              lv.setSelectionFromTop(position, top);
              Log.i("a", "b");
              getActivity().setTitle(
                      "ABE ST count: " + String.valueOf(adapter.getCount())
                              + " items");
              t.stcount = adapter.getCount();
              loadingMore = false;
              t.check1 = 1;
  
          }
      };
  }
  </code></pre>
  
  <p>Listfooter xml(Used int tabfragment class): XML for the footer:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:paddingTop="7dip"
  android:paddingBottom="7dip"
  android:orientation="horizontal"
  android:gravity="center"&gt;
  
  &lt;LinearLayout 
      android:id="@+id/footer_layout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"
      android:orientation="horizontal"
      android:gravity="center"
      android:layout_gravity="center"&gt;
  
  &lt;TextView
      android:id="@+id/footer_1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginRight="5dip"
      android:text="Loading"
      android:textSize="14sp"
      android:textStyle="bold" /&gt;
  
  &lt;/LinearLayout&gt;
  &lt;/LinearLayout&gt; 
  </code></pre>