根据child 找对应的 ViewHolder的方法
mRecycleView.findContainingViewHolder()
RecyclerView 局部刷新原理:
https://www.imooc.com/article/details/id/21993
屏蔽全局刷新上报函数requestLayout ,自己做内部刷新
焦点视图置顶:
1.用bringToFront 方法无效
2.使能子view排序生效 setChildrenDrawingOrderEnabled(true);
自己实现排序函数 getChildDrawingOrder
焦点位置 mSelectedPosition = indexOfChild(getFocusedChild());
/**
* 当前落焦模板置顶
*/
private int mSelectedPosition = 0;
/** <默认构造函数>
*/
public TempletRecyclerView(Context context)
{
super(context);
init(context);
}
/** <默认构造函数>
*/
public TempletRecyclerView(Context context, AttributeSet attrs)
{
super(context, attrs);
init(context);
}
/** <默认构造函数>
*/
public TempletRecyclerView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init(context);
}
private void init(Context context)
{
mScroller = new Scroller(context);
//启用子视图排序功能
setChildrenDrawingOrderEnabled(true);
}
@Override
protected int getChildDrawingOrder(int childCount, int i) {
if (mSelectedPosition >= 0 && i >= 0) {
if (i == childCount -1) {
return mSelectedPosition;
}
else if(i >= mSelectedPosition){
return i + 1 ;
}
}
return super.getChildDrawingOrder(childCount, i);
}
@Override
public void onDraw(Canvas c) {
mSelectedPosition = indexOfChild(getFocusedChild());
super.onDraw(c);
}