我正在开发一个使用 CollectionView 的具有 ListFragment 的 Android 应用程序。我希望能够从 CollectionView 中的 onScroll 事件中获取值,因为它们发生变化并在 ListFragment 甚至 CollectionView 中以非静态方法使用它们,但是由于 onScroll 事件是静态的,因此它不允许引用一种非静态方法。有没有办法做到这一点,或者有没有办法使 ListFragment 的 onScroll 事件非静态?
这里是基本的 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);
}
}