问题描述
我正在尝试获取列表的项目位置,以防用户点击列表中的某个项目。现在,用例是通用的,列表是Listview还是Recyclerview都没有关系。我编写了一个小型辅助功能服务来捕获事件。现在,只要我点击列表项,就会发生两个事件
- TYPE_VIEW_FOCUSED
- TYPE_WINDOW_STATE_CHANGED
现在,由于我只想关注案件列表,因此我提供了一个条件来检查父级是否为recyclerview。我试过使用:
打印索引 val source = event?.source
.
.
.
AccessibilityEvent.TYPE_VIEW_FOCUSED -> {
run {
source?.let {
if(it.className.contains("RecyclerView"))
println(AppConstants.TAG+"View Focused-------------"+it.childCount+"----"+event.fromIndex+"----"+event.toIndex+"----"+event.currentItemIndex)
}
}
}
但是以某种方式,在某些情况下,只有AccessibilityRecord的toIndex方法才能为我提供正确的结果。也就是说,当我点击一个列表项时,它会为我提供正确的索引;当我按返回以返回到我之前点击过的列表时,如果列表的计数大于该项目的总数,则索引会发生变化。可以显示在屏幕上。
让我们说该列表总共包含10个项目。我点击了第三项。现在,当我进入另一个可能包含列表或其他内容的屏幕时,上面的代码将显示:
View Focused-------------4----0----3-----1
当我回到之前点击的列表时,它会再次打印:
View Focused-------------7----0----6-----1
我需要一种方法来区分,更重要的是确定我最初使用的索引是这样。
资源稀缺。所以就走到这里。
请帮助。非常感谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)