2016-03-29 3 views
3

Я создал приложение, которое загрузило некоторые данные из Интернета и показало их в списке с помощью recyclerView.So я добавил SwipeRefreshLayout, чтобы, когда пользователь находится в начале страницы, он может вытащить сверху, чтобы обновить (например, приложение facebook). Но в моем приложении, когда я прокручиваю вниз и снова пытаюсь прокрутить SwipeRefreshLayout, появляется и обновляется моя страница.Когда я прокручиваю SwipeRefreshLayout, обновляя мое приложение

Я также ищу в интернете, но не могу получить правильный ответ.

Я попробую this решение, но оно больше не работает (потому что я использую recyclerView).

Вот некоторые из кода моего приложения для лучшего понимания ...

activity_main

<android.support.v4.widget.SwipeRefreshLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/swipeToRefresh" 
android:layout_height="match_parent" 
android:layout_width="match_parent"> 
<include layout="@layout/content_main"/> 
</android.support.v4.widget.SwipeRefreshLayout> 

MainActivity.java

//..... 
public SwipeRefreshLayout mSwipeRefreshLayout; 

protected void onCreate(Bundle savedInstanceState) { 
//.... 
mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeToRefresh); 
    mSwipeRefreshLayout.setOnRefreshListener(this); 
//...... 
} 

//....... 

@Override 
public void onRefresh() { 
    Api.getBlog(mBlogListAdapter); 
} 

Api Response

//....... 
@Override 
public void onResponse(Call<AllBlog> call, Response<AllBlog> response) { 
    //....... 
    mActivity.mSwipeRefreshLayout.setRefreshing(false); 
} 

В мой адаптер

//........ 
public class BlogListViewHolder extends RecyclerView.ViewHolder implements View.OnScrollChangeListener{ 
    public ImageView mBlogImage; 
    public TextView mBlogTitle; 
    public TextView mBlogAuthor; 
    public BlogListViewHolder(View itemView) { 
     super(itemView); 
     mBlogImage = (ImageView) itemView.findViewById(R.id.blogPhoto); 
     mBlogTitle = (TextView) itemView.findViewById(R.id.blogTitle); 
     mBlogAuthor = (TextView) itemView.findViewById(R.id.blogAuthor); 
    } 
} 

Я также попытался реализовать View.OnScrollChangeListener, но он также не работает.

public class BlogListViewHolder extends RecyclerView.ViewHolder implements View.OnScrollChangeListener{ 
    public ImageView mBlogImage; 
    public TextView mBlogTitle; 
    public TextView mBlogAuthor; 
    public BlogListViewHolder(View itemView) { 
     super(itemView); 
     mBlogImage = (ImageView) itemView.findViewById(R.id.blogPhoto); 
     mBlogTitle = (TextView) itemView.findViewById(R.id.blogTitle); 
     mBlogAuthor = (TextView) itemView.findViewById(R.id.blogAuthor); 

     itemView.setOnScrollChangeListener(this); 
    } 

    @Override 
    public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
     if (v.getVerticalScrollbarPosition() == 0) { 
      mActivity.mSwipeRefreshLayout.setEnabled(true); 
     } else { 
      mActivity.mSwipeRefreshLayout.setEnabled(false); 
     } 
    } 
} 
+0

Пожалуйста, ваш код для 'content_main.xml'. –

ответ

4

Я думаю, что вы реализовали SwipeRefreshLayout самой весь макет. Неправильный способ реализации SwipeRefreshLayout. Вы должны перенести SwipeRefreshLayout только в ваш RecyclerView, а не весь макет.

Как показано ниже:

<android.support.v4.widget.SwipeRefreshLayout 
... 
> 
    <RecyclerView 
    ... 
    /> 
</android.support.v4.widget.SwipeRefreshLayout> 
+0

Спасибо man.I просто поместил весь мой макет в SwipeRefreshLayout.When обернуть только recyclerview с помощью SwipeRefreshLayout проблема решена –

+0

@NiyamatAlmass Рад, что это помогло .. Happy Coding ... !!! –

+0

@ChintanSoni также ответьте на это: http://stackoverflow.com/questions/36434071/android-support-v4-widget-swiperefreshlayout-working-but-it-is-not-visible –

1
//create interface 
    public interface YourFragmentInterface { 
    void fragmentBecameVisible(); 
    } 

//implements YourFragmentInterface 

     @Override 
     public void fragmentBecameVisible() 

     // refresh detail 
     } 
Смежные вопросы