Я работаю над приложением Android, которое имеет ListFragment с помощью CollectionView. Я хочу иметь возможность получать значения из события onScroll в CollectionView по мере их изменения и использовать их в ListFragment или даже CollectionView в нестационарном методе, однако, поскольку событие onScroll статично, он не позволит ссылаться на нестатический метод. Есть ли способ сделать это или есть способ сделать событие onScroll нестатичным для ListFragment?Как получить значения static onScroll из CollectionView обратно в вызывающий ListFragment или использовать значения в нестационарном методе в классе?
Здесь основной CollectionView OnScroll код события
private class MultiScrollListener implements OnScrollListener {
private Set<OnScrollListener> children = new HashSet<OnScrollListener>();
public void addOnScrollListener(OnScrollListener listener) {
children.add(listener);
}
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
for (OnScrollListener listener : children) {
listener.onScrollStateChanged(absListView, i);
}
}
@Override
public void onScroll(AbsListView absListView, int i, int i2, int i3) {
// ?????
// ????? I'd like to get the values of i, i2 and i3, from above
// ????? as they change into a non-static method.
// ?????
myMethod(i);
// I get the following error from Android Studio:
// non static method 'myMethod(int i) cannot be referenced from a static context
//
for (OnScrollListener listener : children) {
listener.onScroll(absListView, i, i2, i3);
}
}
}
Как предложил я даже пытался сделать все, что публика, как показано ниже, но никаких изменений, все та же ошибка.
public class MultiScrollListener implements OnScrollListener {
public Set<OnScrollListener> children = new HashSet<OnScrollListener>();
public void addOnScrollListener(OnScrollListener listener) {
children.add(listener);
}
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
for (OnScrollListener listener : children) {
listener.onScrollStateChanged(absListView, i);
BrowseCorrelatedSessionsActivity.onBrowseSessionScrolled(1);
}
}
@Override
public void onScroll(AbsListView absListView, int i, int i2, int i3) {
for (OnScrollListener listener : children) {
listener.onScroll(absListView, i, i2, i3);
}
}
Я не вижу ничего статического в onScroll? – cYrixmorten
Я вытащил статику из «частного класса MultiScrollListener», но, несмотря на это, я все еще получаю сообщение об ошибке «Нестационарный метод». MyMethod (int i) не может ссылаться на статический контекст «когда я добавляю myMethod (i); –
А? Является ли это MultiScrollListener статическим или? – cYrixmorten