`

android 关于ExpandableListView的一个问题解决 (转)

 
阅读更多



客户提出需求,要求分组列表单击一个group其他的group应该关闭,这个group的group标题应该顶头。

我网上大致找了一圈没找到相关的,于是去google group里搜索了下 ,发现有人提出了他的解决方法:

http://groups.google.com/group/android-developers/browse_thread/thread/638f7ae1cb75b710/0154a631a2f38717?lnk=gst&q=setOnGroupClickListener#0154a631a2f38717

受此启发我想出了自己的方法,重写setOnGroupClickListener方法,使用flag控制:

定义flag记录列表状态
int expandFlag = -1;//控制列表的展开



重写onGroupClick方法

  ExpandableListView listView = getExpandableListView();
 
  listView.setOnGroupClickListener(new OnGroupClickListener() {

   @Override
   public boolean onGroupClick(ExpandableListView listView, View v,
     int groupPosition, long id) {
   
    if (expandFlag == -1) {
     //展开被选的group
     listView.expandGroup(groupPosition);
           //设置被选中的group置于顶端
           listView.setSelectedGroup(groupPosition);
           expandFlag = groupPosition;
    } else if (expandFlag == groupPosition) {
     listView.collapseGroup(expandFlag);
     expandFlag = -1;
    } else {
     listView.collapseGroup(expandFlag);
     //展开被选的group
     listView.expandGroup(groupPosition);
           //设置被选中的group置于顶端
           listView.setSelectedGroup(groupPosition);
           expandFlag = groupPosition;
    }
         
          return true;
   }
  });

经测试完成要求,看起来挺简单的实现,可惜卡了我有两三个小时,主要是没想到这个方法呀,

感谢google group提问和回答的人帮助我开拓了思路。
分享到:
评论

相关推荐

    Android 关于ExpandableListView刷新问题的解决方法

    为了解决这个问题,我们可以创建一个`Handler`来异步发送消息,并在处理消息时调用`notifyDataSetChanged()`: ```java Handler handler = new Handler() { @Override public void handleMessage(Message msg) { ...

    Android之ExpandableListView控件

    在Android开发中,`ExpandableListView`是一种常用的控件,它扩展了标准的`ListView`功能,允许子项可以被展开或折叠,呈现层次结构的数据。这个控件非常适合用来展示具有树状结构的信息,比如菜单、目录或者组织...

    ExpandableListView 解决子级背景色混乱 和父级展开项唯一效果实现

    以上就是关于“ExpandableListView解决子级背景色混乱和父级展开项唯一效果实现”的详细解答。理解并应用这些技巧可以帮助开发者更高效地使用ExpandableListView,提供更好的用户体验。在实际项目中,可能还需要结合...

    Android开发 ExpandableListView嵌套GridView的实现

    在Android开发中,有时我们需要展示层次结构复杂的数据,这时`ExpandableListView`就显得非常有用。...然而,这也意味着需要处理更多的逻辑和细节,因此开发者需要有扎实的Android开发基础和问题解决能力。

    Android ScrollView嵌套ExpandableListView显示不正常的问题的解决办法

    解决这个问题的一种方法是自定义一个ExpandableListView子类,重写其`onMeasure()`方法。在提供的代码中,我们看到创建了一个名为`CustomExpandableListView`的类,它继承自ExpandableListView。重写`onMeasure()`的...

    expandableListview侧滑删除demo

    总之,"expandableListview侧滑删除demo"是一个很好的实践案例,它展示了如何将流行的侧滑删除功能集成到ExpandableListView中,为用户提供更直观、便捷的操作方式。通过学习和研究这个示例,开发者能够进一步提升...

    Android-ExpandableListView制作时间轴-TimeLine

    在这个“Android-ExpandableListView制作时间轴-TimeLine”项目中,开发者创建了一个时间轴的示例,使得用户可以根据时间顺序查看事件。这种布局非常适合展示历史记录、日程安排或者任何按照时间顺序排列的信息。 ...

    Android 关于ExpandableListView去掉里头分割线的方法

    这些问题都可以通过学习相关文章和实例来解决,比如Android UI控件`ExpandableListView`的基本用法、自定义指示器、刷新问题的解决以及实现手风琴效果等。持续学习和实践,将有助于你更好地掌握`ExpandableListView`...

    Android-用ListView模仿ExpandableListView

    至于如何控制父项的展开和折叠,我们可以在数据模型中添加一个状态字段,如`expanded`,并提供一个方法来切换这个状态。在`getView()`中,根据这个状态来决定是否显示或隐藏子项。同时,你需要监听ListView的点击...

    ExpandableListView的错误

    `listViewDemo`可能包含了一个简单的`ExpandableListView`的示例代码。分析这个代码可以找出导致问题的具体原因,如数据源的设置、适配器的实现或者事件监听器的配置。 7. **解决方案**: - 检查数据源是否正确...

    Android-使用ExpandableListView实现的购物车

    在Android应用开发中,`ExpandableListView`是一个非常实用的组件,它允许用户展示一个可展开和折叠的列表,常用于构建层次结构清晰的数据展示,例如在本例中被用作购物车的实现。购物车通常包含多个商品,每个商品...

    ExpandableListView,recyclerview的使用

    首先,`ExpandableListView`是一个扩展性的列表视图,允许每个列表项可以进一步展开显示子项。它在`ListView`的基础上增加了层次结构,非常适合于显示具有树状结构的数据。使用`ExpandableListView`时,你需要创建...

    android亲测非常简单实用的ListView和ExpandableListView下拉刷新通用

    ListView是Android中的一个视图容器,它可以显示一列可滚动的项目列表。开发者通常结合Adapter来填充数据,Adapter负责将数据转化为ListView可显示的View。要实现ListView的下拉刷新,可以使用第三方库如...

    Android ExpandableListView长按事件的完美解决办法

    关于ExpandableListView长按事件处理,网上很多都是使用将上下文菜单注册到ExpandableListView上实现长按事件。这样做弊端显而易见,不够灵活,不能分别对父项、子项、父项之间、子项之间弹出内容做区分。下面来说我...

    基于android ExpandableListView.zip

    Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...

    自定义ListView内嵌GridView,用ExpandableListView实现

    在Android开发中,有时我们需要创建复杂布局以满足用户界面的需求,比如实现一个多级展示的数据结构。在这种情况下,自定义ListView内嵌GridView或者使用ExpandableListView是常见解决方案。这两种方法可以帮助我们...

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

    `ExpandableListView`是Android SDK提供的一种可扩展的列表视图,它可以显示一个父列表项,每个父列表项下还可以展开展示子列表项,这样就能清晰地展现层级关系。 1. **ExpandableListView的基本使用** - 初始化:...

    支持侧滑动作的自定义ExpandableListView

    标题“支持侧滑动作的自定义ExpandableListView”暗示了我们将在一个`ExpandableListView`的基础上添加侧滑手势检测和相应的处理逻辑。这是一个增强用户交互体验的重要步骤,因为侧滑操作能提供一种直观且高效的方式...

Global site tag (gtag.js) - Google Analytics