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

 

 

結束

博客日漸荒廢,還是要勤寫。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM