My implementation was broken after updating both libraries, too. This is my quick fix to make it work again. Any suggestions and improvements are welcome!
Make a new class and extend the SticklistListHeadersListView and implement the ViewDelegate interface from ActionBar-PullToRefresh:
public class PtrStickyListHeadersListView extends StickyListHeadersListView implements ViewDelegate { public PtrStickyListHeadersListView(Context context) { super(context); } public PtrStickyListHeadersListView(Context context, AttributeSet attrs) { super(context, attrs); } public PtrStickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean isReadyForPull(View view, float v, float v2) { View childView = getWrappedList().getChildAt(0); int top = (childView == null) ? 0 : childView.getTop(); return top >= 0; } }
And in your
layout.xml
replace<se.emilsjolander.stickylistheaders.StickyListHeadersListView ...>
with
<com.yourapp.package.foo.PtrStickyListHeadersListView ...>
And at last, add the delegate: (
listView
is an instance of PtrStickyListHeadersListView)ActionBarPullToRefresh.from(getActivity()) // We need to insert the PullToRefreshLayout into the Fragment 's ViewGroup .insertLayoutInto(viewGroup) // We need to mark the ListView and it 's Empty View as pullable // This is because they are not dirent children of the ViewGroup .theseChildrenArePullable(R.id.your_list_id) // We can now complete the setup as desired .listener(...) .useViewDelegate(PtrStickyListHeadersListView.class, listView) .setup(mPullToRefreshLayout);