DobList

Additional

Language
Java
Version
N/A
Created
Apr 5, 2014
Updated
Jan 13, 2016 (Retired)
Owner
Bilal Sammour (bilalsammour)
Contributor
Bilal Sammour (bilalsammour)
1
Activity
Badge
Generate
Download
Source code

DobList

DobList (Google Play Demo)

Any Android developer needs Endless ListView, and needs progress dialog to be shown in the middle of his own ListView at first loading data, so he will write the code line by line or use a custom ListView to get some features and lost his own ListView.

What about getting desired features with your own ListView and its derivatives!

DobList is an Open Source Android library that provides to ListView adding ProgressBar (or any view) to the footer of ListView to be shown in loading more, and callback that is called when reaching last item in ListView.

Here is a short video for the example application in this repository : http://youtu.be/1TPzJDpUwug

Setup

In Eclipse, just import the library as an Android library project. Project > Clean to generate the binaries you need, like R.java, etc. Then, just add DobList as a dependency to your existing project.

How?

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
  View rootView = inflater.inflate(R.layout.fragment_main, container,
    false);

  // ListView initializing
  ListView mListView = (ListView) rootView.findViewById(R.id.mListView);

  // Set DobList before setting adapter
  initDobList(rootView, mListView);

  // Set adapter
  mListView.setAdapter(adapter);

  return rootView;
 }

 private void initDobList(View rootView, ListView listView) {

  // DobList initializing
  dobList = new DobList();
  try {

   // Register ListView
   //
   // NoListViewException will be thrown when
   // there is no ListView
   dobList.register(listView);

   // Add ProgressBar to footers of ListView
   // to be shown in loading more
   dobList.addDefaultLoadingFooterView();

   // Sets the view to show if the adapter is empty
   // see startCentralLoading() method
   View noItems = rootView.findViewById(R.id.noItems);
   dobList.setEmptyView(noItems);

   // Callback called when reaching last item in ListView
   dobList.setOnLoadMoreListener(new OnLoadMoreListener() {

    @Override
    public void onLoadMore(final int totalItemCount) {
     Log.i(TAG, "onStart totalItemCount " + totalItemCount);

     // Just inserting some dummy data after
     // period of time to simulate waiting
     // data from server
     addDummyData(10);
    }
   });

  } catch (NoListViewException e) {
   e.printStackTrace();
  }

  try {
   // Show ProgressBar at the center of ListView
   // this can be used while loading data from
   // server at the first time
   //
   // setEmptyView() must be called before
   //
   // NoEmptyViewException will be thrown when
   // there is no EmptyView
   dobList.startCentralLoading();

  } catch (NoEmptyViewException e) {
   e.printStackTrace();
  }
  // Simulate adding data at the first time
  addDummyData(5);
 }

 protected void addDummyData(final int itemsCount) {
  new Handler().postDelayed(new Runnable() {

   @Override
   public void run() {
    addItems(adapter.getCount(), adapter.getCount() + itemsCount);

    // We must call finishLoading
    // when finishing adding data
    dobList.finishLoading();
   }

  }, 2000);
 }

Properties

  • Set / get ListView - for ListView and its derivatives such as ExpandableListView
  • Set / get footerLoadingView - to define and access a custom footer that will be shown in loading more
  • Set / get emptyView - Sets and get the view to show if the adapter is empty. See startCentralLoading() method
  • Set / get maxItemsCount - Here you can specify the maximum number of items in ListView.
  • Set / get onLoadMoreListener - Callback that is called when reaching last item in ListView.
  • Set / get onScrollListener - Because DobList consumes OnScrollListener, here you can use OnScrollListener.

Methods

  • register - Register ListView. NoListViewException will be thrown when there is no ListView.
  • addDefaultLoadingFooterView - Add ProgressBar to footers of ListView to be shown in loading more.
  • startCentralLoading - Show ProgressBar at the center of ListView this can be used while loading data from server at the first time.

setEmptyView() must be called before.

NoEmptyViewException will be thrown when there is no EmptyView.

Events

  • OnLoadMoreListener - Callback that is called when reaching last item in ListView.

Developed By

Bilal Sammour - bilalsammour@gmail.com

License

Copyright 2014 Bilal Sammour

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.