package zone.com.zrefreshlayout.utils;
import android.support.v7.widget.RecyclerView;
import android.view.View;
/**
* [2017] by Zone
*/
public class RecyclerViewUtils {
/**
* 判断最后一个条目是否完全可见
*
* @param recyclerView
* @return
*/
public static boolean isLastItemVisible(RecyclerView recyclerView) {
final RecyclerView.Adapter<?> adapter = recyclerView.getAdapter();
// 如果未设置Adapter或者Adapter没有数据可以上拉刷新
if (null == adapter || adapter.getItemCount() == 0) {
return true;
}
// 最后一个条目View完全展示,可以刷新
int lastVisiblePosition = getLastVisiblePosition(recyclerView);
if (lastVisiblePosition >= recyclerView.getAdapter().getItemCount() - 1) {
return recyclerView.getChildAt(recyclerView.getChildCount() - 1).getBottom()
<= recyclerView.getBottom();
}
return false;
}
/**
* 获取最后一个可见子View的位置下标
*
* @param recyclerView
* @return
*/
public static int getLastVisiblePosition(RecyclerView recyclerView) {
View lastVisibleChild = recyclerView.getChildAt(recyclerView.getChildCount() - 1);
return lastVisibleChild != null ? recyclerView.getChildAdapterPosition(lastVisibleChild) : -1;
}
/**
* 判断第一个条目是否完全可见
*
* @param recyclerView
* @return
*/
public static boolean isFirstItemVisible(RecyclerView recyclerView) {
final RecyclerView.Adapter<?> adapter = recyclerView.getAdapter();
// 如果未设置Adapter或者Adapter没有数据可以下拉刷新
if (null == adapter || adapter.getItemCount() == 0) {
return true;
}
// 第一个条目完全展示,可以刷新
if (getFirstVisiblePosition(recyclerView) == 0) {
return recyclerView.getChildAt(0).getTop() >= recyclerView.getTop();
}
return false;
}
/**
* 获取第一个可见子View的位置下标
*
* @param recyclerView
* @return
*/
public static int getFirstVisiblePosition(RecyclerView recyclerView) {
View firstVisibleChild = recyclerView.getChildAt(0);
return firstVisibleChild != null ?
recyclerView.getChildAdapterPosition(firstVisibleChild) : -1;
}
}