2016-05-03 41 views
1

我已经使用按照以下方式V4支持库的SwipeRefreshLayout:拉起在android系统RecyclerView刷新

swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
     @Override 
     public void onRefresh() { 
      refreshItems(); 
     } 
    }); 

    void refreshItems() { 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      swipeRefreshLayout.setRefreshing(false); 
     } 
    }, 3000); 
} 

在这种策略中,如果我拉下画面时,第一个列表项是可见的再onRefresh ()方法被调用。

enter image description here

这就是所谓的下拉刷新。但我想要相反的效果。也就是说,如果我在最后一个列表项目可见时拉起屏幕,那么应该调用一个方法,或者应该通知它。可能吗?如果可能的话,请提供给我方式。

+0

我可以问你为什么要完成这种行为? – Grender

+0

我想要这些,因为如果数据量巨大,这些数据从服务器加载,然后我会加载一些数据的第一次,更多的数据将被加载上拉行为 –

+2

然后,你应该寻找**“无尽的滚动监听器”* *,那里有一些库,或者你可以编写你自己的'OnScroll()'onScrollListener'实现来实现它。 – Grender

回答

1

在RecyclerView/ListView的Adapter类中,当最后一个项目膨胀时,您可以放入if语句并调用一个方法。

代码,如果你正在使用RecyclerView: -

private boolean loading = true; 
int pastVisiblesItems, visibleItemCount, totalItemCount; 

mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() 
{ 
    @Override 
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) 
    { 
     if(dy > 0) //check for scroll down 
     { 
      visibleItemCount = mLayoutManager.getChildCount(); 
      totalItemCount = mLayoutManager.getItemCount(); 
      pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition(); 

      if (loading) 
      { 
       if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) 
       { 
        loading = false; 
        Log.v("...", "Last Item Wow !"); 
        //Do pagination.. i.e. fetch new data 
       } 
      } 
     } 
    } 
}); 

还添加以下代码: -

LinearLayoutManager mLayoutManager; 
mLayoutManager = new LinearLayoutManager(this); 
mRecyclerView.setLayoutManager(mLayoutManager); 
+0

@KanchanChowdhury查看我的新回答 –

+0

谢谢你的努力。但它不起作用。 –

2

你说的是你自己,你正在使用SwipeRefreshLayout .. 它用于刷卡刷新, 它没有设计/能够实现你的目标。

我看到它的方式,你将不得不编写自己的自定义视图。

0

嗯,你可以检查,当达到和触发列表的最后一个项目动画+更新。

+0

谢谢。但这不是理想的行为。如果最后一个项目是可见的,我再次拉起它不会被通知。 –

0

在Android应用程序中,我们需要通过垂直轻扫手势刷新视图的内容时,使用Pull To Refresh aka SwipeRefreshLayout。它只接受一个孩子意味着我们想刷新的组件。它使用监听机制来通知谁拥有已发生刷新事件此组件的听众......

基本拉来刷新/ SwipeRefreshLayout XML代码:

<android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/simpleSwipeRefreshLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     < Add View's Here..../> 

</android.support.v4.widget.SwipeRefreshLayout> 

看到更多来自http://abhiandroid.com/materialdesign/pulltorefresh例子。