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

 

 

结束

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值