package flm.b4a.scrollchanglistview;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import anywheresoftware.b4a.BA;
import anywheresoftware.b4a.objects.ListViewWrapper;
@BA.Events(values = { "ScrollStateChanged(Position as Int, ScrollState as Int)",
"ScrollChanged(Position as Int, firstVisibleItem as Int, visibleItemCount as Int, totalItemCount as Int)" })
@BA.Version(1.0F)
@BA.ShortName("ListViewWithScrollEvents")
@BA.Author("Frédéric Leneuf-Magaud")
public class ListViewWithScrollEvents extends ListViewWrapper implements OnScrollListener{
private BA ba;
private String eventName;
private SimpleListView slv;
@Override
public void innerInitialize(BA innBa, String innEventName, boolean keepOldObject) {
super.innerInitialize(innBa, innEventName, keepOldObject);
ba = innBa;
eventName = innEventName;
slv = this.getObject();
slv.setOnScrollListener(this);
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (this.ba != null) {
if (ba.subExists(eventName + "_scrollchanged")) {
int Y = slv.getScrollY();
this.ba.raiseEventFromUI(this, this.eventName + "_scrollchanged", new Object[] { Y, firstVisibleItem, visibleItemCount, totalItemCount });
}
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (this.ba != null) {
if (ba.subExists(eventName + "_scrollstatechanged")) {
int Y = slv.getScrollY();
this.ba.raiseEventFromUI(this, this.eventName + "_scrollstatechanged", new Object[] { Y, scrollState });
}
}
}
}