2016-03-29 71 views
3

İnternetten bazı verileri indirip geri dönüştürücü kullanarak bir liste halinde gösteren bir uygulama oluşturdum.Sen SwipeRefreshLayout ekledim, böylece kullanıcı sayfanın başındayken çekebilir Yukarıdan yenilemeye (facebook uygulaması gibi) .But Uygulamamda aşağı doğru kaydırdığımda ve tekrar kaydırmaya çalışırken SwipeRefreshLayout sayfamı gösterip yeniliyor.Kaydırıyorum SwipeRefreshLayout Uygulamamı yenilemek için

Ayrıca internette de arama yapıyorum ama doğru cevabı bulamıyorum.

this çözümünü deniyorum ancak artık çalışmıyor (Çünkü recyclerView kullanıyorum). İşte

<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> 

activity_main ...
//..... 
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 Tepki

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

MainActivity.java

daha iyi anlaşılması için benim app kod bazı olduğunu İçinde Benim adaptör

//........ 
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); 
    } 
} 

Ben de View.OnScrollChangeListener uygulanması çalıştı ama o da işe.

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' 'için kodunuzu gönderin. –

cevap

4

Sana bütün düzeni kendisine SwipeRefreshLayout uygulayan düşünüyorum. SwipeRefreshLayout öğesini uygulamak için doğru yol bu değil. SwipeRefreshLayout'u tüm düzen yerine yalnızca RecyclerView'unuza sarmalısınız.

altındaki Beğen:

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

Teşekkürler adam.Tüm SwipeRefreshLayout içine sadece tüm düzeni koymak. SwipeRefreshLayout kullanarak sadece recyclerview sarın sorunu çözüldü –

+0

@NiyamatAlmass Mutlu yardımcı oldu .. Mutlu Kodlama ... !!! –

+0

@ChintanSoni lütfen bunu da yanıtlayın: 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 
     }