获取无障碍服务中列表项的位置

问题描述

我正在尝试获取列表的项目位置,以防用户点击列表中的某个项目。现在,用例是通用的,列表是Listview还是Recyclerview都没有关系。我编写了一个小型辅助功能服务来捕获事件。现在,只要我点击列表项,就会发生两个事件

  1. TYPE_VIEW_FOCUSED
  2. 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...