首页
学习
活动
专区
圈层
工具
发布

解决ListView嵌套ListView遇到的问题

Listview嵌套会造成的问题主要是子listview的高度错误导致内容不能正常显示完,解决这个问题,我个人第一个想法就是重新计算子listview的高度,代码如下: private void setListViewHeightBasedOnChildren...(ListView listView) { if(listView == null) return; ListAdapter listAdapter = listView.getAdapter...listView.setLayoutParams(params); } 父listview的adapter中getview方法调用 RelationAdapter relationAdapter...cell.xlistView.setAdapter(relationAdapter);setListViewHeightBasedOnChildren(cell.xlistView); 注意事项: Adapter中getView方法返回的View...的必须由LinearLayout组成,因为只有LinearLayout才有measure()方法,如果使用其他的布局如RelativeLayout,在调用listItem.measure(0, 0);时就会抛异常

2.7K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    listview的工作原理

    onDraw()在ListView当中也没有什么意义,因为ListView本身并不负责绘制,而是由ListView当中的子元素来进行绘制的。...如何你到ListView源码中去找一找,你会发现ListView中是没有onLayout()这个方法的,这是因为这个方法是在ListView的父类AbsListView中实现的,代码如下所示: /**...ListView顶部的像素值,pos则是刚刚传入的mFirstPosition的值,而end是ListView底部减去顶部所得的像素值,mItemCount则是Adapter中的元素数量。...onDraw()在ListView当中也没有什么意义,因为ListView本身并不负责绘制,而是由ListView当中的子元素来进行绘制的。...如何你到ListView源码中去找一找,你会发现ListView中是没有onLayout()这个方法的,这是因为这个方法是在ListView的父类AbsListView中实现的,代码如下所示: /**

    3K100

    ListView的相关总结

    Android的ListView可以算是最古老的UI控件了, 但是它有很多设计上的思想可以借鉴学习。...LitView的使用 回顾一下, ListView的使用其实非常简单, 只需要提供一个 UI,提供一个装载数据的 Adapter, 在 Adapter的 getView 方法里实现每个 item需要渲染的...我们先回想一个问题, 假设一个列表有 1000 个数据, 那么是否是说 ListView 就有 1000 条 UI呢? 结果当然是否定的, 这样对于内存和CPU是极大的浪费。...ListView的优化 通常在 Android初级的面试中会涉及到这个问题, 就是如何优化 ListView, 一般由浅到深的思路是这样的, · 复用 convertView · 自定义 ViewHolder...用 RecyclerView 替代 ListView ListView的局限 其实 ListView的局限很明显, 最简单的是它不能提前渲染 item, 这就造成当我们尝试用异步的方式来延迟渲染的时候有可能会让

    69120

    ListView专题

    ListView专题 1.ListView属性: fadingEdge属性 ListView上边和下边有黑色的阴影,android : fadingEdge = "none"后就不会有阴影了 scrollbars...android:drawSelectorOnTop = "false" 点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的 2.ListView.setEmptyView(...)没有效果 有时调用setEmptyView没有效果,这是因为我们设置的这个EmptyView必须和该ListView在同一个布局体系中 如:下面这样的代码有些时候会没有效果 View loadingView...当ListView通过addHeaderView添后,在onItemClick中的position会加上Header的个数,所以这时候在获取数据的时候要对位置进行处理。...match_parent但是上面显示不出来也是由于match_parent的问题, 如果我们将布局中的layout_height="200dip",这样就能够显示出来ViewPager

    1.7K80

    ListView详解

    只是字符串就用ArrayAdapter,用到图文混排的就用自定义的 2.listview的优化(convertView,viewholder) 首先来了解一下ListView的工作原理。...ListView 针对每个item,要求 adapter“返回一个视图” (getView),也就是说ListView在开始绘制的时候,系统首先调用getCount()函数,根据他的返回值得到ListView...的长度,然后根据这个长度,调用getView()一行一行的绘制ListView的每一项。...用convertView减少文件解析次数 Android系统本身为我们考虑了ListView的优化问题,在复写的Adapter的类中,比较重要的两个方法是getCount()和getView()。...最重要的是,这样优化ListView来处理大的列表的最大缺陷是,因为它迫使ListView显示整个项目列表填满由ScrollView 提供的空间。

    1.9K60

    listview入门

    Listview组件非常重要,4分之一的时间都是在搞这个,还是通过上一节的数据库,写个for循环,插入50条数据。...获取PersonDao对象,调用dao对象的查询全部的方法,得到一个list集合的数据。 遍历这个集合,遍历中调用person实体类对象的toString()方法,得到一条记录的字符串。...ListView 获取ListView对象,通过findViewById()方法,调用ListView对象的setAdapter(adapter)方法设置数据绑定到ListView,参数是一个ListAdapter...,把我的数据集合定义成成员属性,调用List集合size()方法 getItem(), getItemId() getView(position,) 控制索引位置的View对象,position是当前集合的索引...lv=(ListView) findViewById(R.id.mylist); PersonDao dao=new PersonDao(this); persons=

    1.5K30

    android入门 — ListView的优化

    ListView的运行效率是比较低的,因为在getView()中每次都会将整个布局重新加载一遍,当ListView快速滚动的时候就会成为性能瓶颈。   ...调用View中的findViewById()方法获取一次控件的实例,这也是一个很耗时的操作,可以进行优化。...在getView()方法进行判断,如果为空,则使用LayoutInflater去加载布局,如果不为空,则直接对convertView进行重用,这样可以提高ListView的运行效率,在快速滚动的时候也可以表现出更好的性能...当convertView不为空的时候:调用View的getTag()方法,将ViewHolder重新取出来。 ?   ...结论:     无论总量是多少,findViewById方法最多可以调用N+1组(N为一屏可以显示的item的数量)   通过ViewHolder的方法,可以将所有的控件进行缓存,不需要每次通过findViewById

    1.4K130
    领券