需要把ExpandableListView的适配器(继承自BaseExpandableListAdapter)同时绑定到AutoCompleteTextView,实现搜索过滤功能。实现了接口Filterable,以为成功在即,既然编译抛错误
The generic method setAdapter(T) of type AutoCompleteTextView is not applicable for the arguments (MyExpandableListAdapter). The inferred type MyExpandableListAdapter is not a valid substitute for the bounded parameter <T extends ListAdapter & Filterable>
MyExpandableListAdapter未实现ListAdapter,跟进BaseExpandableListAdapter最终继承的接口ExpandableListAdapter既然不是ListAdapter的子类!ExpandableListView继承自ListView google既然让它实现不同的适配器,哦!狗屎!
继续看看setAdapter有两个重载
public void setAdapter(ExpandableListAdapter adapter)
public void setAdapter(ListAdapter adapter)
如果调用
public void setAdapter(ListAdapter adapter)
直接就抛异常。看另外一个函数的实现
public void setAdapter(ExpandableListAdapter adapter) {
// Set member variable
mAdapter = adapter;
if (adapter != null) {
// Create the connector
mConnector = new ExpandableListConnector(adapter);
} else {
mConnector = null;
}
// Link the ListView (superclass) to the expandable list data through the connector
super.setAdapter(mConnector);
}
看,google既然在ExpandableListAdapter和ListAdapter直接做一个链接器来适配ListView。
ExpandableListView的这种实现方法,虽然可重用listview,但函数setAdapter签名和父类ListView不统一,无疑给调用者添加陷阱和增加复杂度。
回到上面的问题:如果需要MyExpandableListAdapter同时能够被AutoCompleteTextView做adapter,只好乖乖实现ListAdapter,所以要实现ListAdapter、ExpandableListAdapter两个接口。这么来编译还是不能通过。
For ExpandableListView, use setAdapter(ExpandableListAdapter) instead of " +
"setAdapter(ListAdapter)
聪明的java编译器把MyExpandableListAdapter认为是ListAdapter的子类了。怎么办?很简单!一个小技巧让编译器更加聪明点
expandableListView.setAdapter((ExpandableListAdapter)MyExpandableListAdapter);
至此MyExpandableListAdapter就不仅可以被ExpandableListView使用而且可以被AutoCompleteTextView使用了。
希望此文对您有用!
分享到:
相关推荐
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠子项,从而实现层次化的数据展示。在"Android项目实战--手机卫士33--ExpandableListView的使用"这个主题中,我们将深入探讨如何在实际...
在Android开发中,`ExpandableListView`是一种非常实用的视图组件,它允许用户通过点击条目来展开或折叠子列表。这个控件通常用于显示层次结构的数据,比如分类目录、菜单或者像手机QQ分组这样的场景。在这个“可以...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,通常用于展示具有层次结构的数据。在这个实例中,我们将深入探讨`ExpandableListView`的使用,包括其基本概念、设置数据、事件...
本人博客:Android常用控件(能折叠的ListView)--ExpandableListView的使用模仿QQ好友列表的demo
在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可折叠的列表,通常用于组织层次结构清晰的数据。在这个“Android-ExpandableListView制作时间轴-TimeLine”项目中,开发者创建了一个时间轴的...
然而,随着用户界面设计的需求不断升级,ListView的功能有时显得不足,这时我们通常会转向它的升级版本——ExpandableListView。ExpandableListView提供了更丰富的交互性和层次结构,使得数据展示更加灵活。 1. **...
在Android开发中,"时光轴 - expandablelistview"是一个常见的设计模式,用于展示具有层次结构的时间线数据。ExpandableListView是Android SDK提供的一种可展开/折叠的列表视图,它允许用户通过点击来展开或折叠各个...
常规的ListView可能无法满足这种需求,这时`ExpandableListView`就显得尤为重要。`ExpandableListView`是Android SDK提供的一种可扩展的列表视图,它可以显示一个父列表项,每个父列表项下还可以展开展示子列表项,...
在Android开发中,ExpandableListView是一个非常实用的控件,它可以模拟折叠效果,类似于QQ好友列表,用户可以展开或收起各个组,显示或隐藏子项。本教程将详细介绍如何在Android应用中使用ExpandableListView来创建...
CommentWithReplyView-master 基于ExpandableListView实现评论和回复的功能。 > 说明 ...处理了NestedScrollView、ExpandableListView和CoordinatorLayout的嵌套问题 点击某条评论,即可@ta进行回复
在Android开发中,ExpandableListView是一个非常实用的控件,常用于展示层次结构的数据,比如在本案例中,它被用来构建一个购物车页面。购物车通常包含多个商品分类,每个分类下又有多个具体商品,这正是...
在Android应用开发中,ExpandableListView是一个非常重要的组件,它允许我们展示数据集,并且可以进行折叠和展开操作,使得信息层次清晰、易于理解。这个毕业设计Demo主要讲解了如何自定义适配器来实现一个功能完善...
在Android应用开发中,ExpandableListView是一个非常重要的控件,常用于展示层次结构的数据,比如菜单、目录等。本项目“Android应用源码之基于自定义适配器的ExpandableListView”是一个毕业设计示例,旨在帮助学生...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠不同的组,每个组下可以包含多个子项。这对于显示层次结构的数据非常有用,例如商品分类列表,其中每个大类下面可以有多个小类的商品...
在Android应用开发中,ExpandableListView是一个非常重要的控件,它允许用户展示数据集时具有层级结构,类似于QQ等社交应用中的好友分组显示。这个毕业设计项目是基于Android平台,通过模仿QQ的扩展功能来实现一个...
1. **集成库**:将`Drag-Drop-ExpandableListView-master`项目中的源码导入到自己的Android工程中,或者通过依赖管理工具(如Gradle)添加库的依赖。 2. **自定义适配器**:根据项目需求,创建一个继承自`...
在Android开发中,ExpandableListView是一个非常实用的控件,它允许用户以树形结构展示数据,具有可折叠和展开的特性,适用于显示层次结构分明的信息。本篇笔记将深入探讨如何使用ExpandableListView,以及如何用...
在Android应用开发中,`ExpandableListView`是一个非常实用的组件,它允许用户展示具有层级结构的数据,非常适合用于实现评论和回复的展示功能。在这个项目中,“Android-基于ExpandableListView实现评论和回复的...
在Android开发中,ExpandableListView是一个非常实用的原生控件,它允许用户展示一个可折叠的列表,其中每个条目都可以展开显示更多的子项。这个控件在处理层次结构数据时特别有用,例如菜单、目录或者组织结构。在...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展示可折叠的列表,其中每个父项可以展开显示多个子项。这个控件非常适合于需要层次结构数据展示的应用,例如目录树、菜单或者分类信息。在这个...