zoukankan      html  css  js  c++  java
  • 【Android疑难杂症】GridView动态设置Item的宽高导致第一个Item不响应或显示不正常的问题


    前言

    这个问题在之前做一个盒子项目时遇到过,最近又遇到了,使用GridView遇到的非常奇葩的问题,这里记录分享一下。

    声明
    欢迎转载,但请保留文章原始出处:) 
    博客园:http://www.cnblogs.com
    农民伯伯: http://over140.cnblogs.com 

    正文

    一、问题

    1.1 先看问题代码:

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_feed_grid_item, parent, false);
                convertView.findViewById(R.id.avatar).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //startActivity
                    }
                });
            }

            convertView.setLayoutParams(new GridView.LayoutParams(mWindowWidth / 3, mWidowWidth / 3));
            
            //其他代码
            return convertView;
        }

    代码的目的是希望根据屏幕的宽度动态设置GridView内Item的大小,很自然就这么写了。

    1.2 具体症状

    1.2.1 第一个Item的ImageView显示不全,总是显示一半,其他的Item没有问题,如论怎么设置都没用

    1.2.2 第一个Item里面设置的点击事件不管用,但是轻轻的滚动一下点击事件立马就生效了。 

    二、解决办法

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_feed_grid_item, parent, false);
                convertView.setLayoutParams(new GridView.LayoutParams(mWindowWidth / 3, mWindowWidth / 3));
                convertView.findViewById(R.id.user_avatar).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //startActivity
                    }
                });
            }

            //其他代码
            return convertView;
        }

    如上即可。 

    三、相关文章

     Why is changing where layout parameters are set solving my “OnClickListener not working for first item in GridView” issue?

     

    结束

    博客日渐荒废,还是要勤写。 

  • 相关阅读:
    Zk学习笔记——权限控制
    guava学习笔记
    Elasticsearch学习笔记——别名
    Kafka学习笔记——存储结构
    分布式协议——Paxos、Raft和ZAB
    图解 Java 中的数据结构及原理!
    牛逼哄哄的 Lambda 表达式,简洁优雅就是生产力!
    你必须了解Spring的生态
    盘点 35 个 Apache 顶级项目,我拜服了…
    前后端分离如何做权限控制设计?
  • 原文地址:https://www.cnblogs.com/over140/p/3999815.html
Copyright © 2011-2022 走看看