@@ -27,15 +27,18 @@ public class PullToRefreshRecyclerView extends SwipeRefreshLayout implements Prv
2727
2828 private RecyclerView mRecyclerView ;
2929
30- private Header mRootHeader ;//留白header
30+ //root header
31+ private Header mRootHeader ;
3132
32- private RelativeLayout mRootRelativeLayout ;//主view,包含footer,header等
33+ //main view,contain footer,header etc.
34+ private RelativeLayout mRootRelativeLayout ;
3335
3436 private View mHeader ;//header
3537
3638 private View mEmptyView ;
3739
38- private int mLoadMoreCount = 10 ;//default = 10
40+ //default = 10
41+ private int mLoadMoreCount = 10 ;
3942
4043 private int mCurScroll ;
4144
@@ -45,12 +48,6 @@ public class PullToRefreshRecyclerView extends SwipeRefreshLayout implements Prv
4548
4649 private BaseFooter mLoadMoreFooter ;
4750
48- // private RecyclerView.LayoutManager mLayoutManger;
49-
50- // private LinearLayoutManager mLinearLayoutManager;
51-
52- // private LayoutParams mFullLayoutParams;//全屏型lp
53-
5451 private PagingableListener mPagingableListener ;
5552
5653// private int[] mSpanItem;
@@ -74,7 +71,7 @@ public interface OnScrollListener{
7471 void onScrollStateChanged (RecyclerView recyclerView , int newState );
7572 void onScrolled (RecyclerView recyclerView , int dx , int dy );
7673
77- //old-method,仿造listview做的,这里应该没什么用处: by linhonghong 2015.10.29
74+ //old-method, like listview 's onScroll ,but it's no use ,right ? by linhonghong 2015.10.29
7875 void onScroll (RecyclerView recyclerView , int firstVisibleItem , int visibleItemCount , int totalItemCount );
7976 }
8077
@@ -88,10 +85,6 @@ public PullToRefreshRecyclerView(Context context, AttributeSet attrs) {
8885 this .setup (context );
8986 }
9087
91- public void release (){
92-
93- }
94-
9588 /**
9689 * 全局入口
9790 */
@@ -125,15 +118,15 @@ private void initView(){
125118 }
126119
127120 /**
128- * 初始化七七八八的东西
121+ * Init
129122 * @param context
130123 */
131124 private void setupExtra (Context context ){
132125 mContext = context ;
133126 isLoading = false ;
134127 hasMoreItems = false ;
135128// mSpanItem = new int[SPAN_SIZE];
136- //初始化一些七七八八的东西
129+ //init something
137130// if(mFullLayoutParams == null) {
138131// mFullLayoutParams = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
139132// }
@@ -179,7 +172,7 @@ public void setAdapter(RecyclerView.Adapter adapter) {
179172
180173 @ Override
181174 public void addHeaderView (View view ) {
182- //2015.11.17实现
175+ //2015.11.17 finish method
183176 if (mHeader != null ){
184177 mRootRelativeLayout .removeView (mHeader );
185178 }
@@ -199,10 +192,10 @@ public void onGlobalLayout() {
199192 mHeader .getViewTreeObserver ().removeGlobalOnLayoutListener (this );
200193 }
201194
202- if (getRecyclerView () == null || mHeader == null ){
195+ if (getRecyclerView () == null || mHeader == null ) {
203196 return ;
204197 }
205- if (mRootHeader == null ){
198+ if (mRootHeader == null ) {
206199 mRootHeader = new Header ();
207200 }
208201 mRootHeader .setHeight (mHeader .getMeasuredHeight ());
@@ -219,7 +212,7 @@ public void onGlobalLayout() {
219212
220213 @ Override
221214 public void setFooter (View view ) {
222- //空实现,我不做处理这里。请在外部adapter做处理
215+ // now is empty, you can do in extra adapter
223216 }
224217
225218 @ Override
@@ -237,18 +230,23 @@ public RecyclerView.LayoutManager getLayoutManager() {
237230
238231 @ Override
239232 public void onFinishLoading (boolean hasMoreItems , boolean needSetSelection ) {
240- //当一页数据太少的时候,不用显示loadingview
241- //临时修改,当一页数据太少的时候,不用显示loadingview
242233 if (getLayoutManager () == null ){
243234 return ;
244235 }
245236 if (!hasMoreItems ){
246- //如果是最后一行
247- mCurScroll = mCurScroll - 100 ;//减去多出的loadmore的高度
237+
238+ //if it's last line, minus the extra height of loadmore
239+ mCurScroll = mCurScroll - 100 ;
240+
248241 }
249- if (getLayoutManager ().getItemCount () < mLoadMoreCount )
242+
243+ // if items is too short, don't show loadingview
244+ if (getLayoutManager ().getItemCount () < mLoadMoreCount ) {
245+
250246 hasMoreItems = false ;
251247
248+ }
249+
252250 setHasMoreItems (hasMoreItems );
253251
254252 isLoading = false ;
@@ -318,7 +316,7 @@ public int findFirstCompletelyVisibleItemPosition(){
318316
319317 @ Override
320318 public void setSwipeEnable (boolean enable ) {
321- //just like extra setEnable(boolean).这里和外部一样的,不过这里控制更方便super.setenable
319+ //just like extra setEnable(boolean).but it's more easy to use, like super.setEnable
322320 mIsSwipeEnable = enable ;
323321 this .setEnabled (mIsSwipeEnable );
324322 }
@@ -345,6 +343,17 @@ public void setLoadMoreCount(int count) {
345343 mLoadMoreCount = count ;
346344 }
347345
346+ @ Override
347+ public void release () {
348+
349+ }
350+
351+ public void setLoadmoreString (String str ){
352+ if (mLoadMoreFooter != null ){
353+ mLoadMoreFooter .setLoadmoreString (str );
354+ }
355+ }
356+
348357 private void setHasMoreItems (boolean hasMoreItems ) {
349358 this .hasMoreItems = hasMoreItems ;
350359 if (mLoadMoreFooter == null ){
@@ -366,7 +375,7 @@ private class InterOnScrollListener extends RecyclerView.OnScrollListener{
366375 @ Override
367376 public void onScrollStateChanged (RecyclerView recyclerView , int newState ) {
368377 super .onScrollStateChanged (recyclerView , newState );
369- //在向下回调之前做super处理
378+ //do super before callback
370379 if (mOnScrollLinstener != null ){
371380 mOnScrollLinstener .onScrollStateChanged (recyclerView ,newState );
372381 }
@@ -375,7 +384,7 @@ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
375384 @ Override
376385 public void onScrolled (RecyclerView recyclerView , int dx , int dy ) {
377386 super .onScrolled (recyclerView , dx , dy );
378- //在向下回调之前做处理,do before callback
387+ //do super before callback
379388 if (getLayoutManager () == null ){
380389 //here layoutManager is null
381390 return ;
@@ -394,12 +403,13 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
394403 visibleItemCount = getLayoutManager ().getChildCount ();
395404 totalItemCount = getLayoutManager ().getItemCount ();
396405 firstVisibleItem = findFirstVisibleItemPosition ();
397- lastVisibleItem = findLastVisibleItemPosition ();//有可能最后一项实在太大了,没办法完全显示
406+ //sometimes ,the last item is too big so as that the screen cannot show the item fully
407+ lastVisibleItem = findLastVisibleItemPosition ();
398408// lastVisibleItem = mLinearLayoutManager.findLastCompletelyVisibleItemPosition();
399409
400410 if (mIsSwipeEnable ) {
401411 if (findFirstCompletelyVisibleItemPosition () != 0 ) {
402- //这里还有个bug,如果用findFirstCompletelyVisibleItemPosition会产生如果第一条太大 ,没办法完全显示则无法下啦刷新,但如果不用又会导致没拉到顶就可以下拉
412+ //here has a bug, if the item is too big , use findFirstCompletelyVisibleItemPosition会产生如果第一条太大 ,没办法完全显示则无法下啦刷新,但如果不用又会导致没拉到顶就可以下拉
403413 //如果不是第一条可见就不让下拉,要不然会出现很严重的到处都能下拉的问题
404414 PullToRefreshRecyclerView .this .setEnabled (false );
405415 } else {
@@ -417,7 +427,6 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
417427 }
418428
419429 }
420- //如果totalItemCount = adapter的最大就下拉刷新
421430
422431 if (mOnScrollLinstener != null ){
423432 mOnScrollLinstener .onScrolled (recyclerView , dx , dy );
@@ -431,9 +440,9 @@ private class AdapterObserver extends RecyclerView.AdapterDataObserver{
431440 @ Override
432441 public void onChanged () {
433442 super .onChanged ();
434- //数据变化,外部对adapter进行了数据刷新会直接调用到这里的代码
443+ //adapter has change
435444 if (mRecyclerView == null ){
436- //这里出错了,rv怎么可能是空的???
445+ //here must be wrong ,recyclerView is null????
437446 return ;
438447 }
439448
0 commit comments