8

有没有人使用Pull to refreshlist with的做法Pinned section header?我将Android-PullToRefresh库与我的列表一起使用,并且我想添加在列表顶部显示固定部分标题的功能。我在另一个项目中使用PinnedHeaderListView库作为固定部分。但是我不能将这两个库合二为一。

Android-PullToRefresh 可以显示固定的部分标题吗?也许任何其他Pull to refresh库可以做到这一点?

4

4 回答 4

9

可以将Actionbar-PullToRefresh库与StickyListHeaders库集成,但您需要使用自定义委托才能使 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 库寻找的)。

于 2014-01-14T21:56:30.830 回答
4

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

  1. 粘性列表标题。这个库是由 Jake Wharton (参考) 贡献的,所以它很有前途并且可以与其他库兼容。你应该尝试使用它。
  2. PinnedSectionListView - 易于使用的带有 Android 固定部分的 ListView。

您可以尝试将这两个库与 ActionBar-PullToRefresh 结合使用。我想你可以实施解决方案;)

于 2013-06-24T10:37:08.503 回答
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 放置一个刷新侦听器,如下所示:

pinned_lisview_container
                    .setOnRefreshListener(new OnRefreshListener() {

                        @Override
                        public void onRefresh() {
                        // do your refresh tasks here
                        }
                    });

你完成了。

于 2015-08-07T09:19:52.843 回答
0

SwipeRefreshLayout + 您将使用的任何其他合适的库都可以完成这项工作。我更喜欢 PinnedSectionListView 因为它使用 Listview 并且在 UI/UX 方面有它的优点。

于 2014-11-14T16:54:56.793 回答