`
hemowolf
  • 浏览: 154404 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
阅读更多

   需要把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项目实战--手机卫士33--ExpandableListView的使用

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠子项,从而实现层次化的数据展示。在"Android项目实战--手机卫士33--ExpandableListView的使用"这个主题中,我们将深入探讨如何在实际...

    可以扩展的listview--expandablelistview

    在Android开发中,`ExpandableListView`是一种非常实用的视图组件,它允许用户通过点击条目来展开或折叠子列表。这个控件通常用于显示层次结构的数据,比如分类目录、菜单或者像手机QQ分组这样的场景。在这个“可以...

    android--ExpandableListView实例

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,通常用于展示具有层次结构的数据。在这个实例中,我们将深入探讨`ExpandableListView`的使用,包括其基本概念、设置数据、事件...

    Android常用控件(能折叠的ListView)--ExpandableListView的使用模仿QQ好友列表

    本人博客:Android常用控件(能折叠的ListView)--ExpandableListView的使用模仿QQ好友列表的demo

    Android-ExpandableListView制作时间轴-TimeLine

    在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可折叠的列表,通常用于组织层次结构清晰的数据。在这个“Android-ExpandableListView制作时间轴-TimeLine”项目中,开发者创建了一个时间轴的...

    ListView的升级版本-ExpandableListView

    然而,随着用户界面设计的需求不断升级,ListView的功能有时显得不足,这时我们通常会转向它的升级版本——ExpandableListView。ExpandableListView提供了更丰富的交互性和层次结构,使得数据展示更加灵活。 1. **...

    时光轴 - expandablelistview

    在Android开发中,"时光轴 - expandablelistview"是一个常见的设计模式,用于展示具有层次结构的时间线数据。ExpandableListView是Android SDK提供的一种可展开/折叠的列表视图,它允许用户通过点击来展开或折叠各个...

    换种思路解决列表套列表-ExpandableListView的使用

    常规的ListView可能无法满足这种需求,这时`ExpandableListView`就显得尤为重要。`ExpandableListView`是Android SDK提供的一种可扩展的列表视图,它可以显示一个父列表项,每个父列表项下还可以展开展示子列表项,...

    Android常用控件(能折叠的ListView)--ExpandableListView的使用模仿QQ好友

    在Android开发中,ExpandableListView是一个非常实用的控件,它可以模拟折叠效果,类似于QQ好友列表,用户可以展开或收起各个组,显示或隐藏子项。本教程将详细介绍如何在Android应用中使用ExpandableListView来创建...

    安卓支付宝天猫淘宝相关相关-ExpandableListView实现购物车页面.rar

    在Android开发中,ExpandableListView是一个非常实用的控件,常用于展示层次结构的数据,比如在本案例中,它被用来构建一个购物车页面。购物车通常包含多个商品分类,每个分类下又有多个具体商品,这正是...

    Android应用源码之自定义适配器的ExpandableListView-IT计算机-毕业设计.zip

    在Android应用开发中,ExpandableListView是一个非常重要的组件,它允许我们展示数据集,并且可以进行折叠和展开操作,使得信息层次清晰、易于理解。这个毕业设计Demo主要讲解了如何自定义适配器来实现一个功能完善...

    Android应用源码之基于自定义适配器的ExpandableListView-IT计算机-毕业设计.zip

    在Android应用开发中,ExpandableListView是一个非常重要的控件,常用于展示层次结构的数据,比如菜单、目录等。本项目“Android应用源码之基于自定义适配器的ExpandableListView”是一个毕业设计示例,旨在帮助学生...

    Node.js-ExpandableListView简单实现商品列表折叠

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠不同的组,每个组下可以包含多个子项。这对于显示层次结构的数据非常有用,例如商品分类列表,其中每个大类下面可以有多个小类的商品...

    Android应用源码模仿QQ的扩展型很好的ExpandableListView-IT计算机-毕业设计.zip

    在Android应用开发中,ExpandableListView是一个非常重要的控件,它允许用户展示数据集时具有层级结构,类似于QQ等社交应用中的好友分组显示。这个毕业设计项目是基于Android平台,通过模仿QQ的扩展功能来实现一个...

    Drag-Drop-ExpandableListView

    1. **集成库**:将`Drag-Drop-ExpandableListView-master`项目中的源码导入到自己的Android工程中,或者通过依赖管理工具(如Gradle)添加库的依赖。 2. **自定义适配器**:根据项目需求,创建一个继承自`...

    Android代码-基于ExpandableListView实现评论和回复的功能。

    CommentWithReplyView-master 基于ExpandableListView实现评论和回复的功能。 &gt; 说明 ...处理了NestedScrollView、ExpandableListView和CoordinatorLayout的嵌套问题 点击某条评论,即可@ta进行回复

    Android学习笔记(二五): 多信息显示-ExpandableListView的使用.doc

    在Android开发中,ExpandableListView是一个非常实用的控件,它允许用户以树形结构展示数据,具有可折叠和展开的特性,适用于显示层次结构分明的信息。本篇笔记将深入探讨如何使用ExpandableListView,以及如何用...

    Android-基于ExpandableListView实现评论和回复的功能

    在Android应用开发中,`ExpandableListView`是一个非常实用的组件,它允许用户展示具有层级结构的数据,非常适合用于实现评论和回复的展示功能。在这个项目中,“Android-基于ExpandableListView实现评论和回复的...

    Android中ExpandableListView(原生控件)3----只展开一组

    在Android开发中,ExpandableListView是一个非常实用的原生控件,它允许用户展示一个可折叠的列表,其中每个条目都可以展开显示更多的子项。这个控件在处理层次结构数据时特别有用,例如菜单、目录或者组织结构。在...

    ExpandableListView 长按事件demo

    在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展示可折叠的列表,其中每个父项可以展开显示多个子项。这个控件非常适合于需要层次结构数据展示的应用,例如目录树、菜单或者分类信息。在这个...

Global site tag (gtag.js) - Google Analytics