一、问题代码
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
TextView item = new TextView(context);
item.setText("Test");
item.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
return item;
} else
return convertView;
}
代码说明:
a). LayoutParams是指android.view.ViewGroup.LayoutParams。
b). 程序运行后将出错,错误很莫名其妙且不固定。
二、问题分析
经调试发现在获取LayoutParams时内部是将这个属性转到android.widget.AbsListView.LayoutParams,也就是这里setLayoutParams弄错了,这里正确的方法是使用GridView.LayoutParams,替换之后问题得以解决。
结束
之前一直是复制、粘贴这部分的代码,所以没注意有这问题,这里记录一下。
分享到:
相关推荐
[Android1_6]继承BaseAdapter为GridView设置数据时设置setLayoutParams时注意 - 农民伯伯 - 博客园.mht349.26 KB [Android]ListView性能优化之视图缓存 - 农民伯伯 - 博客园.mht513.31 KB [Android]ListView性能优化...
在实现九宫格时,我们需要设置GridView的列数为3,这样就能得到一个3行3列的网格布局。这可以通过在XML布局文件中设置`android:numColumns="3"`来实现。例如: ```xml <GridView android:id="@+id/grid_view" ...
开发者可以使用`GridView.LayoutParams`或自定义的LayoutParams,通过`setLayoutParams()`方法设置子视图的参数。 四、GridView的事件监听 GridView支持点击事件和长按事件,可以分别通过`.setOnItemClickListener...
imageView.setLayoutParams(new GridView.LayoutParams(100, 100)); } else { imageView = (ImageView) convertView; } // 加载图片,这里可以使用BitmapFactory.decodeFile()加载本地文件 Bitmap bitmap = ...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似相册、菜单或列表的应用场景。然而,在实际应用中,有时默认的行高可能无法满足显示需求,比如当内容较多时可能...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。这个名为“[其他类别]可拖动、改变列宽的GridView源码_gridviewhtc.zip”的压缩包提供了一个特殊版本的GridView实现,具有用户...
imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) ...
imageView.setLayoutParams(new GridView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); } else { imageView = (ImageView) convertView; } Glide.with...
需要注意的是,实际项目中图片URL列表可能来自网络请求,此时需要在获取数据后再设置Adapter。 总结来说,实现Android的九宫图GridView主要涉及以下步骤: 1. 在XML布局文件中添加GridView并设置属性。 2. 继承...
在布局加载完成后,可以通过`setLayoutParams`设置ListView或GridView的高度,从而避免ScrollView中的滚动混乱。 6. **使用ExpandableListView**:如果数据结构复杂,可以考虑使用ExpandableListView,它允许展开和...
在Android开发中,GridView是一种非常常见的布局控件,它允许我们以网格的形式展示数据,通常用于创建像照片墙、应用列表等多元素排列的界面。本教程将深入讲解如何自定义GridView来显示图片,并附带代码注释以便...
在Android开发中,GridView是一种常用的布局控件,它允许我们以网格的形式展示数据。然而,在默认情况下,当用户点击GridView中的某一个Item时,系统会自动为其添加一个选中状态的背景色。这对于某些设计风格可能并...
`getView()`方法的工作原理是,在需要显示GridView时,系统会通过循环调用这个方法,先获取数据项数量,然后遍历每个位置,获取并设置对应位置的数据项对应的View。例如,对于图片展示,可能需要创建一个新的...
接着,我们使用刚刚创建的`ImageAdapter`设置GridView的数据源: ```java gridview.setAdapter(new ImageAdapter(this)); ``` 为了增强用户体验,我们可以添加点击事件监听器,当用户点击某张图片时,可以显示相应...
因此,优化测量和布局过程是必要的,比如使用ViewHolder减少对象创建,或者在数据加载完成后再进行宽度计算和设置。 总的来说,通过自定义Adapter,测量并设置控件的宽度,我们可以实现ListView表格的动态宽度调整...
同时,要注意这样的布局可能会影响性能,特别是在数据量较大的情况下,因此优化计算过程和避免不必要的计算是十分重要的。此外,还可以考虑使用其他的布局管理器,如RecyclerView,它可以更灵活地处理滚动和布局问题...
但是,GridView也存在一些缺点,例如在加载大量数据时可能会出现性能问题。 五、总结 本文详细介绍了Android网格布局GridView的学习使用,包括GridView的基本概念、使用方法、适配器的实现等。GridView是一种非常...
gridView.setLayoutParams(layoutParams); ``` 3. **设置初始位置**:为了让GridView从最左边开始,我们需要设置初始的滚动位置。可以在Adapter的`notifyDataSetChanged()`方法后添加以下代码: ```java ...
具体实现可以通过遍历Adapter中的数据项并测量每个子项的高度,然后计算总高度并设置给ListView或GridView。 ```java // 设置ListView的高度 public void setListViewHeight(ListView listView) { // 获取ListView...