1 package com.android.dialer.list;
2 
3 import android.view.View;
4 import android.view.View.AccessibilityDelegate;
5 import android.view.ViewGroup;
6 import android.view.accessibility.AccessibilityEvent;
7 
8 /**
9  * AccessibilityDelegate that will filter out TYPE_WINDOW_CONTENT_CHANGED
10  * Used to suppress "Showing items x of y" from firing of ListView whenever it's content changes.
11  * AccessibilityEvent can only be rejected at a view's parent once it is generated,
12  * use addToParent() to add this delegate to the parent.
13  */
14 public class ContentChangedFilter extends AccessibilityDelegate {
15   //the view we don't want TYPE_WINDOW_CONTENT_CHANGED to fire.
16   private View mView;
17 
18   /**
19    * Add this delegate to the parent of @param view to filter out TYPE_WINDOW_CONTENT_CHANGED
20    */
addToParent(View view)21   public static void addToParent(View view){
22     View parent = (View) view.getParent();
23     parent.setAccessibilityDelegate(new ContentChangedFilter(view));
24   }
25 
ContentChangedFilter(View view)26   private ContentChangedFilter(View view){
27     super();
28     mView = view;
29   }
30   @Override
onRequestSendAccessibilityEvent(ViewGroup host, View child, AccessibilityEvent event)31   public boolean onRequestSendAccessibilityEvent (ViewGroup host, View child, AccessibilityEvent event){
32     if(child == mView){
33       if(event.getEventType() == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED){
34         return false;
35       }
36     }
37     return super.onRequestSendAccessibilityEvent(host,child,event);
38   }
39 
40 }
41