huburt-Hu / NewbieGuide

Android 快速实现新手引导层的库,通过简洁链式调用,一行代码实现引导层的显示
Apache License 2.0
3.55k stars 519 forks source link

关于高亮RecyclerView里某个item的问题 #134

Open m5314 opened 5 years ago

m5314 commented 5 years ago

现在有需求是要引导用户点击第一个item,但由于加载数据等原因,可能会导致崩溃,列表刷新后由于旧View被移除,就报了"the view is not showing in the window!"这个错误。请问这种情况怎么解决?

qishi604 commented 5 years ago

我也碰到这个问题了。解决思路有几个:

  1. 引导的时候不要刷新列表,引导完之后再刷新,可以用标志判断引导是否显示,数据是否需要刷新
  2. 不用 RecyclerView 做引导,自己用第一个数据构造一个 itemView(通过 ViewHolder 设置 Data),把这个 itemView 放到一个透明的层盖在 RecyclerView上,这样随便 RecyclerView 怎么动都会有影响。这个方法稍微麻烦。
  3. 调用这个 GuidePage#addHighLight(RectF rectF, Shape shape, int round) 来添加高亮,因为那个异常是 ViewUtils#getLocationInView 跑出来的,不用它也就不会抛异常