Android Adapter里面嵌套ListView实例详解

 更新时间:2017年07月23日 11:09:12   投稿:lqh  
这篇文章主要介绍了Android Adapter里面嵌套ListView实例详解的相关资料,这里提供实例代码并说明如何实现该功能,需要的朋友可以参考下

Android Adapter里面嵌套ListView实例详解

前言:

可嵌套~但是显示需要特殊处理下~以下是处理方法

前几天因为项目的需要,要在一个ListView中放入另一个ListView,也即在一个ListView的每个ListItem中放入另外一个ListView。但刚开始的时候,会发现放入的小ListView会显示不完全,它的高度始终有问题。上网查了下,发现别人也有遇到这样的问题,而大多数人都不推荐这样的设计,因为默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是无法计算的。

     又搜索了一下,发现有StackOverflow上的牛人已经解决了这个问题,经过试验发现是可以解决问题的,它的思路就是在设置完ListView的Adapter后,根据ListView的子项目重新计算ListView的高度,然后把高度再作为LayoutParams设置给ListView,这样它的高度就正确了,以下是源码: 



public class Utility {  
  public static void setListViewHeightBasedOnChildren(ListView listView) {  
    ListAdapter listAdapter = listView.getAdapter();   
    if (listAdapter == null) {  
      // pre-condition  
      return;  
    }  
  
    int totalHeight = 0;  
    for (int i = 0; i < listAdapter.getCount(); i++) {  
      View listItem = listAdapter.getView(i, null, listView);  
      listItem.measure(0, 0);  
      totalHeight += listItem.getMeasuredHeight();  
    }  
  
    ViewGroup.LayoutParams params = listView.getLayoutParams();  
    params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));  
    listView.setLayoutParams(params);  
  }  
}  
 

       只要在设置ListView的Adapter后调用此静态方法即可让ListView正确的显示在其父ListView的ListItem中。但是要注意的是,子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。

      在ScrollView中嵌套ListView(或者ScrollView)的另外一个问题就是,子ScrollView中无法滑动的(如果它没有显示完全的话),因为滑动事件会被父ScrollView吃掉,如果想要让子ScrollView也可以滑动,只能强行截取滑动事件,有牛人在论坛中发过代码说可以。虽然我没有亲自试过,但估计是可行的。

      虽然在ScrollView中显示ScrollView在技术上的难题可以攻破,但是这样的设计却是非常差的用户体验因为用户会不容易看到和操作子ScrollView中的内容。比如好的设计是,父ListView的每个Item只显示概括性的描述,然后点击其Item会进入另外一个页面来详细描述和展示以及对这个Item的操作。

以上就是对Android Adapter嵌套Listview 的实例详解,本站关于Android 开发的文章还有很多,希望大家搜索查阅,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android单项绑定MVVM项目模板的方法

    Android单项绑定MVVM项目模板的方法

    这篇文章主要给大家介绍了关于Android单项绑定MVVM项目模板的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • Android神兵利器之Image Asset Studio的实现

    Android神兵利器之Image Asset Studio的实现

    这篇文章主要介绍了Android神兵利器之Image Asset Studio的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Android使用 Retrofit 2.X 上传多文件和多表单示例

    Android使用 Retrofit 2.X 上传多文件和多表单示例

    本篇文章主要介绍了Android使用 Retrofit 2.X 上传多文件和多表单示例,具有一定的参考价值,有兴趣的小伙伴一起来了解一下
    2017-08-08
  • listview的上滑下滑监听,上下滑监听隐藏顶部选项栏的实例

    listview的上滑下滑监听,上下滑监听隐藏顶部选项栏的实例

    下面小编就为大家分享一篇listview的上滑下滑监听,上下滑监听隐藏顶部选项栏的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Android电话拨号器实例详解

    Android电话拨号器实例详解

    这篇文章主要为大家详细介绍了Android电话拨号器实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android开发之删除项目缓存的方法

    Android开发之删除项目缓存的方法

    这篇文章主要介绍了Android开发之删除项目缓存的方法,结合实例形式分析了Android开发中关于缓存的设置与删除技巧,需要的朋友可以参考下
    2016-02-02
  • 详解Android广播Broadcast的启动流程

    详解Android广播Broadcast的启动流程

    这篇文章主要为大家介绍了Android广播Broadcast启动流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Android中的binder机制详解

    Android中的binder机制详解

    这篇文章主要介绍了Android中的binder机制详解,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
    2021-04-04
  • Android应用开发中控制反转IoC设计模式使用教程

    Android应用开发中控制反转IoC设计模式使用教程

    这篇文章主要介绍了Android应用开发中控制反转IoC设计模式使用教程,IoC其实更常被理解为一种依赖注入的模式,用来分解业务层降低耦合,需要的朋友可以参考下
    2016-04-04
  • Android使用MobSDK短信验证

    Android使用MobSDK短信验证

    这篇文章主要为大家详细介绍了Android使用MobSDK短信验证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论