For almost a week am I wondering (unsuccesfully) how to how to detect that all ListView objects (rows) are loaded. My ListView is Load-More type (i've set the limit to 5 rows, so after every 5 rows does it load more 5). I am using Parse.com framework. When the whole list is loaded I want to remove footer View. For more see my code below.
Do you have any idea or advice, how to accomplish it?
Thanks in advance.
public class Fragment1 extends Fragment {
    private ListView mListView;
    private AnimalAdapter mAdapter;
    ProgressBar mProgressBar;
    EditText mEditText;
    RelativeLayout mRelativeLayout;
    ProgressBar oProgressBar;
    LinearLayout mLinearLayout;
    Context context;
    LayoutInflater inflater;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        final View rootView = inflater.inflate(R.layout.animalsfrag, container, false);
        mListView = (ListView)rootView.findViewById(R.id.animal_list);
        View header = getActivity().getLayoutInflater().inflate(R.layout.header, null);
        header.setPadding(2, 8, 4, 2);
        mListView.setVisibility(View.INVISIBLE);
        mListView.requestFocus();
        mListView.addHeaderView(header);
        View footer = getActivity().getLayoutInflater().inflate(R.layout.footer, null);
        mListView.addFooterView(footer);
        footer.setVisibility(View.VISIBLE);
        mProgressBar = (ProgressBar) rootView.findViewById (R.id.loading_animals);
        mProgressBar.setVisibility(View.VISIBLE);
        RemoteDataTask task = new RemoteDataTask();
        task.execute();
    return rootView;
    }
     public void updateData() { //Main area no.1
         mListView = (ListView)getView().findViewById(R.id.animal_list);
         int limit = mListView.getCount() + 5;
         ParseQuery<Animal> query = ParseQuery.getQuery(Animal.class);
      query.setCachePolicy(CachePolicy.CACHE_THEN_NETWORK);
    query.orderByAscending("animal");
    query.setLimit(limit);
       Toast.makeText(getActivity(), "now", Toast.LENGTH_SHORT).show();
    query.findInBackground(new FindCallback<Animal>() {
        @Override
          public void done(List<Animal> animals, ParseException error) {
              if(animals != null){
                  mAdapter.clear();
               mProgressBar.setVisibility(View.INVISIBLE);
              for (int i = 0; i < animals.size(); i++) {
                      mAdapter.add(animals.get(i));
                  }
              }
          }
      });
    }
     private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
         @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }
         @Override
            protected Void doInBackground(Void... params) {
                    updateData();
                return null;
            }
         @Override
            protected void onPostExecute(Void result) {
               mListView = (ListView) getView().findViewById(R.id.animal_list);
                // Pass the results into ListViewAdapter.java
               mAdapter = new AnimalAdapter(getActivity(), new ArrayList<Animal>());
               mListView.setAdapter(mAdapter);
               mListView.setVisibility(View.VISIBLE);
               mListView.setTextFilterEnabled(true);
                mListView.setAdapter(mAdapter);
                mAdapter = new AnimalAdapter(getActivity(), new ArrayList<Animal>());
                mListView = (ListView) getView().findViewById(R.id.animal_list);
                mAdapter = new AnimalAdapter(getActivity(), new ArrayList<Animal>());
                mListView.setAdapter(mAdapter);
                 mListView.setAdapter(mAdapter);
                mEditText = (EditText) getView().findViewById(R.id.search_animal);
                mListView.setOnScrollListener(new OnScrollListener() {
                    @Override //Main area no.2
                    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
                            int totalItemCount) {
                         final int lastItem = firstVisibleItem + visibleItemCount;
                           if(lastItem == totalItemCount) {
                                updateData();
                           }
                        mListView.setFooterDividersEnabled(false);
                    }
                    @Override
                    public void onScrollStateChanged(AbsListView view,
                            int scrollState) {
                        if (SCROLL_STATE_TOUCH_SCROLL == scrollState) {
                            View currentFocus = getActivity().getCurrentFocus();
                            if(currentFocus != null) {
                                currentFocus.clearFocus();
                            }
                            mEditText = (EditText) getActivity().findViewById(R.id.search_animal);
                            InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(
                                      Context.INPUT_METHOD_SERVICE);
                                imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
                            }
                    }
                });
                mEditText.addTextChangedListener(new TextWatcher(){
                    @Override
                    public void afterTextChanged(Editable s) {
                    }
                    @Override
                    public void beforeTextChanged(CharSequence s,
                            int start, int count, int after) {
                    }
                    @Override
                    public void onTextChanged(CharSequence s, int start,
                            int before, int count) {
                        System.out.println("Text ["+s+"]");
                        mAdapter.getFilter().filter(s.toString());
                    }
                });
                  }
         }
}