1

我正在尝试使用 AccessibilityInfo 类读取任何应用程序的 ListView 中的每个项目。问题是我通过使用以下代码获取 ListView 内的项目总数:


 if(event.getClassName().equals("android.widget.ListView")) {
            String className= TextView.class.getName();
            AccessibilityNodeInfo nodeInfo= event.getSource();
            int i= nodeInfo.getChildCount(); }

但是我没有在 ListView 中获取项目的名称,例如让一个 ListView 中有 5 个文本视图,然后我想从该 TextView 中获取文本。我尝试使用以下方法进一步破坏 nodeInfo 对象:


 for(int j=0; j<nodeInfo.getChildCount() ;j++){
                AccessibilityNodeInfo subChild = nodeInfo.getChild(j);
                CharSequence subText = subChild.getText();

                Log.e("MyService: ","ListView child name: "+subText);
            }

所以我在 ListView 中获取 TextView 的值时做错了什么,

或者

不可能吗?

4

1 回答 1

1

我自己找到了解决方案,解决方案是: event.getSource()方法返回AccessibilityNodeInfo的实例,通过将该实例值转换为字符串格式,我们可以轻松获得结果。我们只需要断开字符串并获得所需的结果,就我而言,我所做的方式是:

 String get_cord= String.valueOf(event.getSource());
    String[] first_split= get_cord.split("[;]");
                    for(int i=0; i<first_split.length; i++){
                        if(first_split[i].contains("text")){
                            String[] second_split= first_split[i].split(":");
                            user= second_split[1].trim();
                            System.out.println(user);
                            Log.e("MyService: ","username is: "+user);

                            break;
                        }
                    }`
于 2017-08-21T06:31:07.953 回答