android.widget.GridView中setAdapter(ListAdapter adapter)中,对于ListAdapter 中的public View getView(int position, View convertView, ViewGroup parent) 有如下处理以复用View
View row = convertView; ViewHolder holder; if (row == null) { LayoutInflater inflater = mContext.getLayoutInflater(); row = inflater.inflate(R.layout.item, null); holder = new ViewHolder(); holder.mImage = (ImageView) row.findViewById(R.id.img); row.setTag(holder); } else { holder = (ViewHolder) row.getTag(); }
在设置图像的具体的内容的时候,有条件判断如下:
if (mList.get(position) != null) { holder.mImage.setImageDrawable(xxxx); } else { holder.mImage.setBackgroundResource(R.drawable.bg); }
在实际显示的过程中,出现了位置0的图片样式显示到了位置8的上面,查询问题的初期脑子短路,以为是数据重复的原因导致。后来在想起来定位显示上复用的处理。
此问题的原因在于:
位置0的view在位置8被复用,而设置图片的时候,在分支处理的时候有的是设置图片内容的本身,有的却是设置图片的背景,在已经设置过图片内容的情况下又没有清理的话,则会出现所谓的数据重复。
相关推荐
在Android开发中,GridView和RecyclerView是两种常用的列表控件,它们都采用了数据绑定和视图复用机制来提高性能和优化用户体验。然而,这种复用机制在特定情况下可能会引发问题,尤其是在涉及用户交互如Checkbox...
GridView是Android平台中...总的来说,"GridView数据循环滚动"是一个涉及到数据绑定、滚动监听、视图复用以及性能优化等多个方面的问题。通过理解和实践这些技术,我们可以为用户创建出流畅且具有吸引力的滚动界面。
GridView的子View(ImageView)可以复用,利用`convertView`参数在`getView()`方法中避免重复创建ImageView,降低内存开销。 7. **懒加载** 只加载视窗内的图片,当用户滚动时,提前加载即将进入视窗的图片,释放...
在Android开发中,GridView是一种非常常见的布局控件,它允许我们以网格的形式展示数据,通常用于创建像照片墙、应用列表等界面。本教程将详细讲解如何实现一个使用GridView进行分页显示的功能,同时adapter继承自...
在GridView中实现向前向后显示数据,即数据的滚动功能,是移动应用开发中的常见需求。这涉及到数据加载、适配器(Adapter)的使用以及ListView与GridView的区别等内容。 首先,理解GridView的基本结构。GridView...
Adapter是数据源与视图之间的桥梁,它负责将数据转化为GridView可显示的View。在Android中,我们通常使用BaseAdapter或ArrayAdapter作为GridView的Adapter。 二、自定义样式 1. item布局:自定义GridView的每一项...
默认情况下,GridView会一次性加载所有数据,这可能导致内存溢出,尤其是在数据量大的情况下。因此,我们需要实现分页加载,即按需加载数据。 分页加载的关键在于适配器(Adapter)。在Android中,我们可以自定义一...
在Android中,通常通过Adapter类来连接GridView与数据源,Adapter负责将数据转化为可显示的视图。 创建GridView的第一步是添加GridView到布局文件。在XML布局文件中,你可以用`<GridView>`标签来定义它,并设置相关...
在数据量较大或者需要分页显示时,GridView配合Adapter能够高效地处理数据。本篇文章将深入探讨“GridView系列---GridView固定表头”的知识点,帮助开发者实现更优秀的UI设计。 一、GridView基本概念 1. GridView是...
- `getView(int position, View convertView, ViewGroup parent)`:这个方法会为GridView创建或复用一个View,并将数据绑定到该View上。 4. 绑定Adapter到GridView: 最后,在Activity或Fragment中找到GridView实例...
考虑到GridView可能会显示大量数据,应考虑使用convertView复用机制以提高性能,避免因频繁创建新视图而导致的性能问题。 10. **博客资源** 提及博主有一个关于这个话题的博客,读者可以通过博主提供的链接了解更...
在这里,我们可以创建一个自定义的适配器,继承自BaseAdapter,重写其中的`getCount()`(返回数据源的大小)、`getItem(int position)`(获取指定位置的项)、`getItemId(int position)`(返回项的ID)以及`getView...
在Android开发中,GridView是一种常见的布局管理器,用于展示数据集,通常以网格形式排列,每个数据项占据一个单元格。本项目的核心是实现单排显示的GridView,并从JSON数据源中解析数据来动态加载项目。这样的设计...
总的来说,"gridview分页显示手机所有应用"是一个涉及到Android UI设计、数据获取、适配器原理以及可能的分页技术的综合问题。通过理解并运用这些知识点,开发者可以创建一个高效且用户友好的应用列表界面。
在这个类中,你需要实现`getCount()`(返回数据项的数量)、`getItem(int position)`(获取指定位置的数据项)、`getItemId(int position)`(返回数据项的ID)以及`getView(int position, View convertView, ...
在Android开发中,GridView是一种非常常用的布局控件,它允许我们以网格的形式展示数据,通常用于创建类似照片墙、应用列表等场景。本篇将详细讲解Android中的GridView布局控件,包括其基本概念、使用方法、自定义...
在BaseAdapter的子类中,重写`getCount()`返回数据集的大小,`getItem(int position)`获取指定位置的项,`getItemId(int position)`返回项的ID,以及最重要的`getView(int position, View convertView, ViewGroup ...
在Android开发中,横向滑动多页显示GridView是一种常见的用户界面设计,用于展示大量数据并提供良好的用户体验。这种设计通常结合ViewPager和GridView两个组件来实现,就像QQ表情面板那样,用户可以通过水平滑动来...
通过设置View的各个部分(如TextView, ImageView等)来显示对应的数据。这样,当有大量数据时,可以显著减少内存分配和对象创建,提升性能。 在提供的"GridView分组带下拉刷新 demo"中,你将看到这些概念的实际应用...
`getView()`是最关键的部分,它创建或复用一个convertView,并从中找到Checkbox(`moneyPayCb`),设置其文本为对应位置的金额数据。 为了实现单选效果,我们使用Checkbox的背景资源来控制选中状态。当选中时,背景...