返回顶部
首页 > 资讯 > 精选 >Android 中ListView和GridView赋值错位怎么办
  • 246
分享到

Android 中ListView和GridView赋值错位怎么办

androidlistviewgridview 2023-05-30 18:05:17 246人浏览 泡泡鱼
摘要

小编给大家分享一下Android 中ListView和GridView赋值错位怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!ListView和GridView多次调用getView的bug,导致赋值错位最近总遇到写G

小编给大家分享一下Android 中ListView和GridView赋值错位怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

ListView和GridView多次调用getView的bug,导致赋值错位

最近总遇到写GridView适配器赋值时,最后一两个需定义其他图片时,赋图错误,原因就是适配器的getView多次调用,导致数据赋值错误,上网搜索终于找到解决方案,以此记录下。

一.ListView

原因

因为listView一般用的是wrap_content,高度不确定,导致系统需要不断地测量,也就多次调用onMeasure方法,所以就多次调用getView。

解决

很简单,把宽高写死即可(明确给个数字或者match_parent)

二.GridView

原因

不管高度和宽度写死与否都会多次调用getView,原因有待继续探索,。。。。

解决

无法阻止多次调用getView,只能在onMeasure调用getView的时候不要去对convertView做赋值的操作,只有当onLayout的时候再对ConvertView进行操作。

1).自定义GridView:

MyGridView.javapublic class MyGridView extends GridView {public boolean isOnMeasure;public MyGridView(Context context) {super(context);}public MyGridView(Context context, AttributeSet attrs) {super(context, attrs);}public MyGridView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {isOnMeasure = true;super.onMeasure(widthMeasureSpec, heightMeasureSpec);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {isOnMeasure = false;super.onLayout(changed, l, t, r, b);}}

2).getView中对ConvertView的处理

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {System.out.println("xcqw getView 1***position"+position);ViewHolder holder = null;if (convertView == null) {convertView = inflater.inflate(R.layout.item,parent, false);holder = new ViewHolder();holder.tvContent = (TextView) convertView.findViewById(R.id.tv_content);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}if(((MyGridView) parent).isOnMeasure){//如果是onMeasure调用的就立即返回return convertView;}System.out.println("xcqw getView 2***position"+position);String content = contentList.get(position);holder.tvContent.setText(content);//如果不是onMeasure调用的就可以正常操作了//赋值操作return convertView;}

这样就ok了。

看完了这篇文章,相信你对“Android 中ListView和GridView赋值错位怎么办”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Android 中ListView和GridView赋值错位怎么办

本文链接: https://lsjlt.com/news/220501.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android 中ListView和GridView赋值错位怎么办
    小编给大家分享一下Android 中ListView和GridView赋值错位怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!ListView和GridView多次调用getView的bug,导致赋值错位最近总遇到写G...
    99+
    2023-05-30
    android listview gridview
  • ExtJs异步无法向外传值和赋值怎么办
    这篇文章将为大家详细讲解有关ExtJs异步无法向外传值和赋值怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、Ext.data.Store.load();方法是异步...
    99+
    2024-04-02
  • JavaScript中的变量怎么声明和赋值
    这篇文章主要介绍“JavaScript中的变量怎么声明和赋值”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript中的变量怎么声明和赋值”文章能帮助大家...
    99+
    2024-04-02
  • mysql中bit类型怎么赋值和使用
    在 MySQL 中,BIT 类型用于存储位字段值。BIT(n) 表示 n 个位字段值,其中 n 是一个范围从 1 到 64 的整数。...
    99+
    2024-04-09
    mysql
  • chrome、firefox、IE中input输入光标位置错位怎么办
    这篇文章主要介绍了chrome、firefox、IE中input输入光标位置错位怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。浏览器中input输入光标位置错位详解 在...
    99+
    2023-06-08
  • JavaScript中BUG和错误怎么办
    小编给大家分享一下JavaScript中BUG和错误怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!计算机程序中的缺陷通常称...
    99+
    2024-04-02
  • php数组中键和值间怎么转换位置
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑php将数组中键和值转换位置方法1:利用foreach循环和一个空数组<php $arr1=array("aaa"=>11,"...
    99+
    2016-01-24
    php 数组
  • Android studio中运行adb命令出错怎么办
    小编给大家分享一下Android studio中运行adb命令出错怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!折腾了一下Android studio,好不...
    99+
    2023-06-05
  • Android中怎么使用GPS和NetWork获取定位信息
    在Android中,可以通过以下步骤使用GPS和NetWork获取定位信息: 在AndroidManifest.xml文件中添加...
    99+
    2023-10-24
    ​android
  • oracle中出现ORA-01078和LRM-00109错误怎么办
    小编给大家分享一下oracle中出现ORA-01078和LRM-00109错误怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2024-04-02
  • oracle中ora00372和ora01110数据文件不能写报错怎么办
    这篇文章主要介绍oracle中ora00372和ora01110数据文件不能写报错怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 解决:一、查询数据...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作