Skip to content

Instantly share code, notes, and snippets.

@petitviolet
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save petitviolet/758f53f0ac7668ed2a90 to your computer and use it in GitHub Desktop.
Save petitviolet/758f53f0ac7668ed2a90 to your computer and use it in GitHub Desktop.
ListViewにonScrollListenerをaddする
// リフレクション使ってもともとsetしてあるonScrollのlistenerを取ってくる
AbsListView listView = (AbsListView) mParentScrollableView;
AbsListView.OnScrollListener onScrollListener = null;
Class<?> listViewClass = mParentScrollableView.getClass();
try {
while (listViewClass != AbsListView.class) {
listViewClass = listViewClass.getSuperclass();
}
// field名は決め打ち
Field field = listViewClass.getDeclaredField("mOnScrollListener");
field.setAccessible(true);
onScrollListener = (AbsListView.OnScrollListener) field.get(listView);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
final AbsListView.OnScrollListener defaultOnScrollListener = onScrollListener;
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (defaultOnScrollListener != null) {
defaultOnScrollListener.onScrollStateChanged(view, scrollState);
}
}
@Override
public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (defaultOnScrollListener != null) {
defaultOnScrollListener.onScroll(absListView, firstVisibleItem, visibleItemCount, totalItemCount);
}
// do something
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment