Reputation: 3881
Does anyone has practice of using Pull to refresh
list with Pinned section header
?
I use Android-PullToRefresh lib with my list and I want to add ability of showing pinned section header at the top of list. I used PinnedHeaderListView lib in another project for pinned section. But I can't combine these two libraries into one.
Is Android-PullToRefresh can show pinned section header? Perhaps any other Pull to refresh
lib can do it?
Upvotes: 8
Views: 4148
Reputation: 331
You can use a combination of SwipeRefreshLayout of support-library and the PinnedHeaderListview.
In your XML file, use like following:
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/pinned_lisview_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<za.co.immedia.pinnedheaderlistview.PinnedHeaderListView
android:id="@+id/event_items_lisview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</za.co.immedia.pinnedheaderlistview.PinnedHeaderListView>
</android.support.v4.widget.SwipeRefreshLayout>
And then in java code, just write codes for your PinnedHeaderListView as usual. Finally just put a Refresh Listener for your SwipeRefreshLayout like below:
pinned_lisview_container
.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
// do your refresh tasks here
}
});
You are done.
Upvotes: 2
Reputation: 1926
SwipeRefreshLayout + any other suitable library that you would use can do the job. I would prefer PinnedSectionListView beacuse it uses Listview and it has it its pros in terms of UI/UX.
Upvotes: 0
Reputation: 8559
I did some research and I found 2 alternatives:
You can try combining these two libraries with ActionBar-PullToRefresh. I suppose you can implement the solution ;)
Upvotes: 4
Reputation: 363
It's possible to integrate the Actionbar-PullToRefresh library with the StickyListHeaders library, but you need to use a custom Delegate in order to get Actionbar-PullToRefresh to work correctly:
public class StickyListViewDelegate extends AbsListViewDelegate {
@Override public boolean isReadyForPull(View view, final float x, final float y) {
StickyListHeadersListView sticky = (StickyListHeadersListView) view;
return super.isReadyForPull(sticky.getWrappedList(), x, y);
}
Integrated like so:
StickyListViewDelegate delegate = new StickyListViewDelegate();
ActionBarPullToRefresh.from(getActivity()).theseChildrenArePullable(mListView)
.useViewDelegate(StickyListHeadersListView.class, delegate)
.listener(this).setup(mPullToRefreshLayout);
The reason that the two libraries don't work together is because the StickyListHeadersListView class does not actually extend ListView (which is what the Actionbar-PullToRefresh library looks for when assigning a delegate by default).
Upvotes: 9