我正在编写一个使用AdapterView的Android应用。在AdapterView类中有多个IsInFilterMode()
调用,它只是一个返回false的单行函数。我不能覆盖这个函数所以我不能为我的生活找出为什么这个函数只是返回false时存在。描述说如果它处于过滤模式,它返回true。以下是IsInFilterMode()
:
/**
* Indicates whether this view is in filter mode. Filter mode can for instance
* be enabled by a user when typing on the keyboard.
*
* @return True if the view is in filter mode, false otherwise.
*/
boolean isInFilterMode() {
return false;
}
我对Java比较陌生,所以也许我在这里缺少一些典型的Java源代码?还有其他代码会被我混淆吗?
答案 0 :(得分:3)
首先,缺少可见性修饰符通常称为 package-private 。在可见性范围内,它位于protected
和private
之间 - 只有同一个包中的其他类可以覆盖package-private方法。有关详细信息,请参阅Controlling Access to members of a Class。
Android框架经常使用它 - 它允许框架覆盖这些方法,而不允许最终用户(Android开发人员)做同样的事情,并可能干扰框架的运作方式。
在这种情况下,AdapterView
的默认值根本就不支持过滤模式。
一些AdapterView
子类确实支持它。例如,AbsListView
及其后代就是这样做的。在AbsListView
的情况下,此方法返回内部属性的值,该属性用于跟踪列表是否实际处于过滤模式。