首先是主要佈局java
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swipeRefreshLayout" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/recylerView" android:layout_width="wrap_content" android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView> </android.support.v4.widget.SwipeRefreshLayout>
而後是獲取控件以及設置監聽android
findViewById...... //設置下拉刷新 swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { if(isrefreshing){//判斷是否正在刷新 Log.d(TAG,"ignore manually update!"); } else{ do....... } } });
說了下拉刷新,那麼就有上拉加載更多,其實我的以爲上拉加載更多RecyclerView以及SwipeRefreshLayout都沒有作得很好,也是這個控件用起來不是很舒服的地方。簡單的介紹一種方式多線程
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); int lastVisibleItem = ((LinearLayoutManager) mLayoutManager).findLastVisibleItemPosition(); int totalItemCount = mLayoutManager.getItemCount(); //lastVisibleItem >= totalItemCount - 4 表示剩下4個item自動加載,各位自由選擇 // dy>0 表示向下滑動 if (lastVisibleItem >= totalItemCount - 4 && dy > 0) { if(isLoadingMore){ Log.d(TAG,"ignore manually update!"); } else{ loadPage();//這裏多線程也要手動控制isLoadingMore isLoadingMore = false; } } } });
總結:ide
一、新控件用起來是很舒服,可是不少功能沒有所有書寫好
佈局
二、指望官方解決上拉加載更多的問題
spa