forked from upstream-mirrors/OpenTracks
8a08e7b2b5
These thumbnails are created and loaded async using cache from free memory available. Fixes #545.
43 lines
1.5 KiB
Java
43 lines
1.5 KiB
Java
package de.dennisguse.opentracks.adapters;
|
|
|
|
import android.view.View;
|
|
import android.widget.AbsListView;
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
|
/**
|
|
* AbsListView.OnScrollListener class that can be used to know what views in a ListView are currently visible while scrolling.
|
|
*/
|
|
public class ScrollVisibleViews implements AbsListView.OnScrollListener {
|
|
private int from = -1;
|
|
private int to = -1;
|
|
|
|
private VisibleViewsListener visibleViewsListener;
|
|
|
|
public ScrollVisibleViews(@NonNull VisibleViewsListener visibleViewsListener) {
|
|
this.visibleViewsListener = visibleViewsListener;
|
|
}
|
|
|
|
@Override
|
|
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
|
if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE || scrollState == AbsListView.OnScrollListener.SCROLL_STATE_FLING || scrollState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
|
|
if (from >= 0 && to >= 0) {
|
|
for (int i = from; i < to; i++) {
|
|
View viewChild = view.getChildAt(i - from);
|
|
visibleViewsListener.onViewVisible(viewChild, i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
|
from = firstVisibleItem;
|
|
to = firstVisibleItem + visibleItemCount;
|
|
}
|
|
|
|
interface VisibleViewsListener {
|
|
void onViewVisible(View view, int position);
|
|
}
|
|
}
|