带有固定节标题的PullToRefresh列表

时间:2013-06-24 09:55:14

标签: android pull-to-refresh

是否有人将Pull to refresh列表与Pinned section header一起使用? 我在列表中使用Android-PullToRefresh lib,我希望添加在列表顶部显示固定节标题的功能。我在另一个项目中使用PinnedHeaderListView lib作为固定部分。但我无法将这两个库合并为一个。

Android-PullToRefresh是否可以显示固定部分标题?也许任何其他Pull to refresh lib都可以做到吗?

4 个答案:

答案 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)

我做了一些研究,发现了两种选择:

  1. StickyListHeaders。该库由Jake Wharton(reference)提供,因此它很有前景,可以与其他库兼容。你应该尝试使用它。
  2. PinnedSectionListView - 易于使用带有Android固定部分的ListView。
  3. 您可以尝试将这两个库与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方面具有优势。