是否有人将Pull to refresh
列表与Pinned section header
一起使用?
我在列表中使用Android-PullToRefresh lib,我希望添加在列表顶部显示固定节标题的功能。我在另一个项目中使用PinnedHeaderListView lib作为固定部分。但我无法将这两个库合并为一个。
Android-PullToRefresh是否可以显示固定部分标题?也许任何其他Pull to refresh
lib都可以做到吗?
答案 0 :(得分:9)
可以将Actionbar-PullToRefresh库与StickyListHeaders库集成,但您需要使用自定义Delegate才能使Actionbar-PullToRefresh正常工作:
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);
}
如此整合:
StickyListViewDelegate delegate = new StickyListViewDelegate();
ActionBarPullToRefresh.from(getActivity()).theseChildrenArePullable(mListView)
.useViewDelegate(StickyListHeadersListView.class, delegate)
.listener(this).setup(mPullToRefreshLayout);
两个库不能一起工作的原因是因为StickyListHeadersListView类实际上并没有扩展ListView(这是Actionbar-PullToRefresh库在默认情况下分配委托时所查找的内容)。
答案 1 :(得分:4)
我做了一些研究,发现了两种选择:
您可以尝试将这两个库与ActionBar-PullToRefresh结合使用。我想你可以实现解决方案;)
答案 2 :(得分:2)
您可以使用SwipeRefreshLayout支持库和PinnedHeaderListview的组合。
在XML文件中,使用如下:
<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>
然后在java代码中,像往常一样为PinnedHeaderListView编写代码。最后,为您的SwipeRefreshLayout添加一个Refresh Listener,如下所示:
pinned_lisview_container
.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
// do your refresh tasks here
}
});
你已经完成了。
答案 3 :(得分:0)
SwipeRefreshLayout +您将使用的任何其他合适的库都可以完成这项工作。 我更喜欢PinnedSectionListView,因为它使用Listview,它在UI / UX方面具有优势。