I have looked at lots of implementations of endless lists. One of them is https://github.com/commonsguy/cwac-endless
All of them are using listviews. And all of them are simply adding another row to the list. But when we consider Gridview (like in Google Play Store) and add the loading view as another item in the grid, it looks ugly. How can I achive the same thing in the Play Store?
i have write a scroll listener and set this scroll listener to my grid view . please correct me if found error.
EG:
final GridView g = (GridView) findViewById(R.id.myGrid);
g.setAdapter(new ImageAdapter(this));
EndlessScrollListener scrollListener=new EndlessScrollListener(g,new RefreshList() {
@Override
public void onRefresh(int pageNumber) {
System.out.println("On Refresh invoked..");
}
});
g.setOnScrollListener(scrollListener);
/////////////////////////////////////////////////////////////////////////
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.GridView;
public class EndlessScrollListener implements OnScrollListener {
private GridView gridView;
private boolean isLoading;
private boolean hasMorePages;
private int pageNumber=0;
private RefreshList refreshList;
private boolean isRefreshing;
public EndlessScrollListener(GridView gridView,RefreshList refreshList) {
this.gridView = gridView;
this.isLoading = false;
this.hasMorePages = true;
this.refreshList=refreshList;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (gridView.getLastVisiblePosition() + 1 == totalItemCount && !isLoading) {
isLoading = true;
if (hasMorePages&&!isRefreshing) {
isRefreshing=true;
refreshList.onRefresh(pageNumber);
}
} else {
isLoading = false;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
public void noMorePages() {
this.hasMorePages = false;
}
public void notifyMorePages(){
isRefreshing=false;
pageNumber=pageNumber+1;
}
public interface RefreshList {
public void onRefresh(int pageNumber);
}
}