如何使用带有GridViews的Fragments的ChrisBanes的ActionBar-PullToRefresh库

时间:2013-11-08 17:23:33

标签: android android-layout gridview android-fragments pull-to-refresh

我正在尝试使用Chris Banes的图书馆Actionbar-PullToRefresh。它可以找到here

我在我的应用中使用了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>

这适用于ListViewScrollViewGridView等内容。但是,显然这对Fragments(Tabs&amp; ViewPagers)不起作用。现在,在示例代码中,他使用ScrollView的{​​{1}} INSTEAD 包装了可刷新片段。

我不能这样做,因为我的片段1(在标签1下面)有一个PullToRefreshLayout。现在我无法将GridView添加到GridView,因为这没有意义。

例如,如果我将ScrollView放在GridView内,如下所示,那就没有意义了:

ScrollView

以上代码有效。有点。 (我需要禁用我的GridView的滚动并使用ExpandableGridView来使其正常工作......这看起来有点过分而且我甚至不确定这是否会起作用)

如果我用<?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> 或任何其他布局替换ScrollView包装器,则刷新不起作用。

怎么办?如何让我的布局与这个库一起工作而不包围PullToRefreshLayout

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

谢谢!

1 个答案:

答案 0 :(得分:3)

我有一个类似的问题,试图让它与我在其中一个标签中的ListView一起使用。

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

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

mPullToRefreshAttacher = PullToRefreshAttacher.get(this);

接下来制作一个公共方法,允许访问刚刚初始化的attacher。

public PullToRefreshAttacher getPullToRefreshAttacher() {
    return mPullToRefreshAttacher;
}

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

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

mPullToRefreshAttacher.addRefreshableView(activeListView, this);

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

然后确保您的片段实现了OnRefreshListener,以便您可以处理Refresh。

我实际上没有使用GridView对此进行测试,所以请告诉我它是否有效。

祝你好运!