Android SwipeRefreshLayout,带垂直视图寻呼机,仅刷新最上面的片段

Android SwipeRefreshLayout,带垂直视图寻呼机,仅刷新最上面的片段,android,android-fragments,android-viewpager,vertical-scrolling,swiperefreshlayout,Android,Android Fragments,Android Viewpager,Vertical Scrolling,Swiperefreshlayout,我尝试在代码中实现swiperefreshlayout,但它会不断刷新整个寻呼机,而不是在第一个Fragment即第0个Fragment时进行刷新。 我尝试将refresh设置为false,如图所示,但加载程序仍然出现,并且在再次返回第0个片段时不会重置。 在设置swiperefreshlayout.enable(false)时,我无法在任何地方刷新它。 有人能提出一个替代方案吗? 这是我的XML文件: <?xml version="1.0" encoding="utf-8"?> &

我尝试在代码中实现
swiperefreshlayout
,但它会不断刷新整个寻呼机,而不是在第一个
Fragment
即第0个
Fragment
时进行刷新。 我尝试将refresh设置为false,如图所示,但加载程序仍然出现,并且在再次返回第0个
片段时不会重置。
在设置swiperefreshlayout.enable(false)
时,我无法在任何地方刷新它。 有人能提出一个替代方案吗? 这是我的
XML
文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parentLinearLayout"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/swipe_refresh_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:fillViewport="true">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
            <lbbdapp.littleblackbook.com.littleblackbook.Support.VerticalViewPager
                android:id="@+id/verticalViewPager"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
            </LinearLayout>
        </ScrollView>
    </android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>

不要在ViewGroup上扩展SwipeRefesh,而是在ViewPager的每个片段中使用它。 解决此问题后,现在需要检查ViewPager和SwiperFresh的向下滚动手势

public class NEWSwipeRefresh extends SwipeRefreshLayout {

    private View mTargetView;

    public NEWSwipeRefresh(Context context) {
        this(context, null);
    }

    public NEWSwipeRefresh(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void setTarget(View view) {
        mTargetView = view;
    }

    @Override
    public boolean canChildScrollUp() {
        if (mTargetView instanceof YOURVIEW) {
            final StaggeredGridView absListView = (YOURVIEW)mTargetView;
            return absListView.getChildCount() > 0
                    && (absListView.getFirstVisiblePosition() > 0 || absListView
                            .getChildAt(0).getTop() < absListView
                            .getPaddingTop());
        } else {
            return super.canChildScrollUp();
        }
    }

}
公共类NewsweepRefresh扩展SwipeRefreshLayout{
私有视图;
公共新闻刷新(上下文){
这个(上下文,空);
}
公共新闻刷新(上下文、属性集属性){
超级(上下文,attrs);
}
公共void setTarget(视图){
mTargetView=视图;
}
@凌驾
公共布尔值canChildScrollUp(){
if(视图的mTargetView实例){
最终视图absListView=(YOURVIEW)mTargetView;
返回absListView.getChildCount()>0
&&(absListView.getFirstVisiblePosition()>0 | | absListView
.getChildAt(0).getTop()

正常情况下,滑动刷新返回-1,并向其父项提供滑动手势。现在,我已在这里为listview/gridview覆盖了它,以便它可以检查可见项,如果它位于顶部,则它将滑动到父对象,否则它将滑动到子对象。

不要将滑动范围扩展到ViewGroup上,而是在ViewPager的每个片段中使用它。 解决此问题后,现在需要检查ViewPager和SwiperFresh的向下滚动手势

public class NEWSwipeRefresh extends SwipeRefreshLayout {

    private View mTargetView;

    public NEWSwipeRefresh(Context context) {
        this(context, null);
    }

    public NEWSwipeRefresh(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public void setTarget(View view) {
        mTargetView = view;
    }

    @Override
    public boolean canChildScrollUp() {
        if (mTargetView instanceof YOURVIEW) {
            final StaggeredGridView absListView = (YOURVIEW)mTargetView;
            return absListView.getChildCount() > 0
                    && (absListView.getFirstVisiblePosition() > 0 || absListView
                            .getChildAt(0).getTop() < absListView
                            .getPaddingTop());
        } else {
            return super.canChildScrollUp();
        }
    }

}
公共类NewsweepRefresh扩展SwipeRefreshLayout{
私有视图;
公共新闻刷新(上下文){
这个(上下文,空);
}
公共新闻刷新(上下文、属性集属性){
超级(上下文,attrs);
}
公共void setTarget(视图){
mTargetView=视图;
}
@凌驾
公共布尔值canChildScrollUp(){
if(视图的mTargetView实例){
最终视图absListView=(YOURVIEW)mTargetView;
返回absListView.getChildCount()>0
&&(absListView.getFirstVisiblePosition()>0 | | absListView
.getChildAt(0).getTop()

通常,滑动刷新返回-1,它会给它的父对象滑动手势。现在我在这里为listview/gridview覆盖了它,这样它就可以检查可见的项目,如果它在上面,它会给父对象滑动,否则它会给子对象滑动。

好吧,几天以来我一直在尝试解决这个问题,这很简单。只需将
swiperFreshLayout
作为
ViewPager
的父元素,并使用
OnPageChangeListener
在特定片段上禁用
swiperFreshLayout
,如下所示:

//  viewpager change listener
 OnPageChangeListener viewPagerPageChangeListener = new OnPageChangeListener() {

  @Override
  public void onPageSelected(int position) {

     //for the 0th pos disable SwipeRefreshLayout;
     if(position != 0){
        swipeRefreshLayout.setEnabled(false);
     }else swipeRefreshLayout.setEnabled(true);

  }

  @Override
  public void onPageScrolled(int arg0, float arg1, int arg2) {

  }

  @Override
  public void onPageScrollStateChanged(int arg0) {

  }};

好吧,几天以来我一直在想这个问题,很简单。只需将
swiperFreshLayout
作为
ViewPager
的父元素,并使用
OnPageChangeListener
在特定片段上禁用
swiperFreshLayout
,如下所示:

//  viewpager change listener
 OnPageChangeListener viewPagerPageChangeListener = new OnPageChangeListener() {

  @Override
  public void onPageSelected(int position) {

     //for the 0th pos disable SwipeRefreshLayout;
     if(position != 0){
        swipeRefreshLayout.setEnabled(false);
     }else swipeRefreshLayout.setEnabled(true);

  }

  @Override
  public void onPageScrolled(int arg0, float arg1, int arg2) {

  }

  @Override
  public void onPageScrollStateChanged(int arg0) {

  }};

你能给我一个样品吗?我如何只检查一次特定的刷卡?我的活动也允许正常滑动。如何检测垂直视图寻呼机的垂直向下滑动?@SimranBakshi我写了一个将SwiperFresh与listview/gridview一起使用的示例。你能给我一个示例吗?我如何只检查一次特定的刷卡?我的活动也允许正常滑动。如何检测垂直视图寻呼机的垂直向下滑动?@SimranBakshi我写了一个将SwiperFresh与listview/gridview结合使用的示例。