zoukankan      html  css  js  c++  java
  • Android GridView 问题

          今天在项目中用GridView进行图片的展示,遇到的一个问题。

    问题如下:

      做一个类似微信朋友圈状态发布的界面,设置最多选择2张图片,在GridView的adapter的getView中判断position,小于2则下一个图片显示添加图片的加号,等于2将加号隐藏,设置holder.image.setVisibility(View.GONE);点击加号进入拍照或相册进行图片选择,在发布界面的onRestart()中刷新列表adapter.notifyDataSetChanged();开始测试界面效果,选择两张照片,进入发布界面,GridView中两张照片显示正常,点击一张图片进入预览界面,将其删除,再返回主界面,GridView中一张图片显示正常,并且下一个位置显示添加图片的加号图片也正常,这时候重新开一个界面或者按下Home键使之失去焦点,在回到主界面,问题出现了,原本显示完好的GridView消失了。怎么刷也出不来。

          经过查找,确定了问题所在,但是对于GridView的工作原理不是很了解,所以也解释不清楚。

          猜测应该是主界面重新获得焦点后无法获取GridView高度导致其他控件将其挤压至无法显示。

          导致问题出现的两行代码如下:

                1、adapter的getView方法中:holder.image.setVisibility(View.GONE);(这句话删掉也是可以解决问题的,不过这样在图片达到最大数量后下一个Item中依然可以显示添加图片的加号button,显然不科学)

                2、GridView布局界面中:android:layout_height="wrap_content"

          解决方法:

                将GridView高度设为固定值,目前还没找到更好的方法。

      PS:终于找到了问题的所在,原来是View.GONE在作怪,改为View.INVISIBLE即可,GONE和INVISIBLE的区别参见后续的文章。

  • 相关阅读:
    Linux网络基础配置
    UVA 116 Unidirectional TSP(dp + 数塔问题)
    修改Hosts文件
    倒排索引
    可以把阿里云上面的一些介绍和视频都看看
    练练脑,继续过Hard题目
    explicit的用法
    auto_ptr的使用和注意
    我写的快排程序
    快速排序、查第k大
  • 原文地址:https://www.cnblogs.com/x-dev/p/3757133.html
Copyright © 2011-2022 走看看