项目中用到listview总结(一)
2016-05-27 11:30
323 查看
1,ScrollView嵌套Listview,网上有很多种解决方案,我这里用的是重新绘制listview的高度使得显示正常,如下:
4,由于我的listview里面item包含各种TextView,EditText,我保存这些数据发送至服务器。在获取每个item是
public class ListViewInSrcollView extends ListView { public ListViewInSrcollView(Context context) { super(context); } public ListViewInSrcollView(Context context, AttributeSet attrs) { super(context, attrs); } //重写该方法,达到使ListView适应ScrollView的效果 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }2,我在用自定义封装的View时候,把它放进listview里,即listview的item布局文件就是一个自定义View,当在adapter里面获取
convertView时,再用convertView.gettag会报错,原因是convertView与holder.xxxx指向的是同一个对象。解决方法就是布局item外面
可加一层linearlayout或其他多种方式,参考:点击打开链接。
3,当我的item布局文件不同时,为了复用ViewHolder,将其保存在convertView中,但是取出来强制转换时会出现错误,因为当相邻item布局
不同时,此时的为ViewHolder2,而convertView里面保存的是ViewHolder1,所以会出错。解决办法是,取出对象用instanceof判断,如果不
是该ViewHolder的对象,则重新创建新的convertView
<pre name="code" class="java">DeviceHolder deviceHolder = null; if (convertView == null || (convertView != null && !(convertView.getTag() instanceof DeviceHolder))) { deviceHolder = new DeviceHolder(); //重新创建新的convertView,这里不贴出代码了。 convertView.setTag(deviceHolder); } else { deviceHolder = (DeviceHolder) convertView.getTag(); }
4,由于我的listview里面item包含各种TextView,EditText,我保存这些数据发送至服务器。在获取每个item是
我用的是listview.getChildCount();但是运行时报错,原因是我添加了footer,所以应该减1,如下
for (int i = 0; i < listview.getChildCount()-1; i++) { //ServiceView是我自定义的View,item就是一个ServiceView,这也是上面问题2的原因 ServiceView serviceView = (ServiceView) listView.getChildAt(i); }但是当我有多个item时,发现保存的数据只有一个item的,最后查看官方文档才发现问题出在listview.getChildCount();该方法获得的是
当前listview的可见的item的数量,而不是所有的item的个数。正确的应该用Adapter的getCount()方法来获取。当你的item全部显示,
无需滑动的话二者的数量是一直的,但是item个数多,以至于需要滑动的话,getChildCount()会少于getCount;所以这点要注意。
相关文章推荐
- 完美实现Android ListView中的TextView的跑马灯效果
- android上改变listView的选中颜色
- Delphi7中Listview的常用功能汇总
- Delphi控件ListView的属性及使用方法详解
- android中ListView数据刷新时的同步方法
- Android提高之ListView实现自适应表格的方法
- Android中实现水平滑动(横向滑动)ListView示例
- Android ListView分页功能实现方法
- C#实现ListView选中项向上或向下移动的方法
- C#下listview如何插入图片
- Listview加载的性能优化是如何实现的
- C#实现listview Group收缩扩展的方法
- C# listview添加combobox到单元格的实现代码
- ListView 百分比进度条(delphi版)
- Android listview多视图嵌套多视图
- ListView Adapter优化 实例
- Android用ListView显示SDCard文件列表的小例子
- Adapter实现ListView带多选框等状态的自定义控件的注意事项
- asp.net ListView 数据绑定
- Android之ScrollView嵌套ListView和GridView冲突的解决方法