如何在列表视图上绑定多个Scroll侦听器?

Pat*_*ick 2 android listview listener

我想用Sticky Section Header和一个浮动动作按钮创建一个列表视图.

我为此使用2个库(StickyListHeaders和FloatingActionButton),但是他们需要将滚动侦听器绑定到listview才能工作.问题是listview上只能有一个滚动监听器.

我怎么能在listview上使用2个滚动监听器?

Nik*_*ski 8

组合滚动侦听器列表并只使一个侦听器通知所有这些是您的请求的非常简单的解决方案.

注意:如果您计划从重载方法OnScrollListenerMultiScrollListener,请确保您拨打一个super电话

import android.widget.AbsListView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by nikola on 9/12/14.
 */
public class MultiScrollListener implements AbsListView.OnScrollListener {
    List<AbsListView.OnScrollListener> mListeners = new ArrayList<AbsListView.OnScrollListener>();
    public void addScrollListener(AbsListView.OnScrollListener listener){
        mListeners.add(listener);
    }
    public void removeListener(AbsListView.OnScrollListener listener){
        mListeners.remove(listener);
    }
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
        for(AbsListView.OnScrollListener listener: mListeners){
            listener.onScrollStateChanged(view,scrollState);
        }
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
        for(AbsListView.OnScrollListener listener: mListeners){
            listener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

MultiScrollListener scrolls = new MultiScrollListener();
scrolls.addScrollListener(scroll1);
scrolls.addScrollListener(scroll2);
mListView.setOnScrollListener(scrolls);
Run Code Online (Sandbox Code Playgroud)