【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?

 

 

结束

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

posted @   农民伯伯  阅读(20388)  评论(10编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
历史上的今天:
2009-10-30 浅析简历——中华英才网
点击右上角即可分享
微信分享提示