最近有个需求,就是当列表数据请求下来后,在第一个item上添加蒙板引导信息
分析了下步骤:
1,加载完数据
2 RecyclerView观察到数据已经呈现到ui上
3 把ui设计的蒙板,做到第一个item上
第1点和第3点没什么可说的,重点说下第2点:
当数据加载完后,先调用
adpter.notifyDataSetChanged();
然后判断是不是第一次添加蒙板,如果是第一次添加,则给RecyclerView添加一个观察者,当蒙板呈现完成后,移除观察者,具体如下:
recycler.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if(list.size()==0){
return;
}
LinearLayoutManager manager = (LinearLayoutManager) recycler.getLayoutManager();
View view=manager.findViewByPosition(0)==null?null:manager.findViewByPosition(0).findViewById(R.id.item);
if(view==null){
return;
}
/**
* 在view上 做蒙板
*
*
*
*/
//移除观察者
recycler.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});