1

我正在尝试使用 Chris Banes 的库Actionbar-PullToRefresh。可以在这里找到。

我在我的应用程序中使用 Tabs + ViewPager + Fragments。

我面临的问题是我的片段有一个GridView,我无法弄清楚如何使用这个库来处理它。

我通读了示例代码。他说您所要做的就是将可刷新的视图包装成PullToRefreshLayout这样:

<uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ptr_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <!-- Your content, here we're using a ScrollView -->

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
    </ScrollView>

</uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout>

这适用于 , , 等内容ListViewScrollView但是GridView,显然这不适用于片段(标签和 ViewPagers)。现在,在示例代码中,他用一个ScrollView INSTEAD包装了可刷新的片段PullToRefreshLayout

我不能这样做,因为我的 Fragment 1(在选项卡 1 下)有一个GridView. 现在我不能将 a 添加GridView到 aScrollView因为那没有意义。

例如,如果我将 myGridView放入ScrollView如下所示的内部,那就没有意义了:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ptr_scrollview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:scrollbarStyle="outsideInset" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#FFF000" >

        <!-- MY GRID VIEW -->

        <GridView
        ...
        />

    </RelativeLayout>
</ScrollView>

上面的代码有效。有点。(我需要禁用我的 GridView 的滚动并使用ExpandableGridView使其正常工作......这似乎有点矫枉过正,我什至不确定这是否可行)

如果我ScrollView用其他任何类似或任何其他布局替换包装器PullToRefreshLayout,则刷新不起作用。

该怎么办?如何让我的布局在不环绕ScrollView它的情况下使用这个库?

我希望我足够清楚。如果您需要更多信息,请告诉我。我尽力解释它。

谢谢!

4

1 回答 1

3

我有一个类似的问题,试图让它与我的一个选项卡中的 ListView 一起工作。

我通过使用 PullToRefreshAttacher 而不是使用布局解决了我的问题。

在控制片段的 ViewPager 的 Activity 中,在 onCreate 或 init 方法中初始化 PullToRefreshAttacher。

mPullToRefreshAttacher = PullToRefreshAttacher.get(this);

接下来创建一个公共方法,允许访问您刚刚初始化的附加程序。

public PullToRefreshAttacher getPullToRefreshAttacher() {
    return mPullToRefreshAttacher;
}

然后在您想要刷新功能的片段中。

mPullToRefreshAttacher = ((MainTabActivity) getActivity())
            .getPullToRefreshAttacher();

mPullToRefreshAttacher.addRefreshableView(activeListView, this);

除了在您的情况下,activeListView 将是对您的 GridView 而不是 ListView 的引用。

然后确保您的片段实现 OnRefreshListener 以便您可以处理刷新。

我实际上没有用 GridView 测试过,所以让我知道它是否有效。

祝你好运!

于 2013-11-08T17:52:13.653 回答