GridViewダイナミック設定幅の高さにより、最初のitemクリックが応答しないか、表示が正常でないという問題を解決


最近プロジェクトをしている時に2回この問題に出会って、今経験を分かち合います
一、問題
質問コード:
@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		final ViewHolder holder;
		final Light light = beans.get(position);
		if (convertView == null) {
			holder = new ViewHolder();
			convertView = inflater.inflate(R.layout.lo_light_item, null);
			holder.tvName = (TextView) convertView
					.findViewById(R.id.tv_light_item);
			holder.image = (ImageView) convertView
					.findViewById(R.id.iv_light_item);
			holder.ly = (LinearLayout) convertView
					.findViewById(R.id.ly_light_item);

			
			convertView.setTag(holder);

		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		
//     item  
			holder.ly
					.setLayoutParams(new GridView.LayoutParams(
							WindowManager.LayoutParams.FILL_PARENT, gv
									.getHeight() / 4));
return convertView;}
 
  
 
  
 
  

1、 Item View , , Item ,

2、 Item , 。 

@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// TODO Auto-generated method stub
		final ViewHolder holder;
		final Light light = beans.get(position);
		if (convertView == null) {
			holder = new ViewHolder();
			convertView = inflater.inflate(R.layout.lo_light_item, null);
			holder.tvName = (TextView) convertView
					.findViewById(R.id.tv_light_item);
			holder.image = (ImageView) convertView
					.findViewById(R.id.iv_light_item);
			holder.ly = (LinearLayout) convertView
					.findViewById(R.id.ly_light_item);

			//     item  
			holder.ly
					.setLayoutParams(new GridView.LayoutParams(
							WindowManager.LayoutParams.FILL_PARENT, gv
									.getHeight() / 4));
			convertView.setTag(holder);

		} else {
			holder = (ViewHolder) convertView.getTag();
		}
		
		return convertView;
	}